上一页 1 ··· 40 41 42 43 44 45 46 47 48 ··· 50 下一页
摘要: 一、缓存的收益和成本 左侧为客户端直接调用存储层的架构,右侧为比较典型的缓存层+存储层架构, 缓存加入后带来的收益如下: 加速读写:因为缓存通常都是全内存的(例如Redis、Memcache),而存储层通常读写性能不够强悍(例如MySQL),通过缓存的使用可以有效地加速读写,优化用户体验。 降低后端 阅读全文
posted @ 2018-06-11 14:37 BigJunOba 阅读(557) 评论(0) 推荐(0)
摘要: 一、数据分布 1.数据分布理论 2.Redis数据分区 Redis Cluser采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:slot=CRC16(key)&16383。每一个节点负责维护一部分槽以及槽所映射的键值数据 Redis虚拟槽分区的特点: 解耦数据和节点之间的 阅读全文
posted @ 2018-06-04 22:28 BigJunOba 阅读(4619) 评论(0) 推荐(0)
摘要: Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的。 Redis从2.8开始正式提供了Redis Sentinel(哨兵)架构来解决这个问题。 一、基本概念 1.主从复制的问题 ( 阅读全文
posted @ 2018-06-04 22:22 BigJunOba 阅读(676) 评论(0) 推荐(0)
摘要: Redis所有的数据都存在内存中,当前内存虽然越来越便宜,但跟廉价的硬盘相比成本还是比较昂贵,因此如何高效利用Redis内存变得非常重要。 高效利用Redis内存首先需要理解Redis内存消耗在哪里,如何管理内存,最后才能考虑如何优化内存。 一、内存消耗 有些内存消耗是必不可少的,而有些可以通过参数 阅读全文
posted @ 2018-06-04 22:19 BigJunOba 阅读(1442) 评论(0) 推荐(2)
摘要: 为什么说阻塞是Redis的噩梦: Redis是典型的单线程架构,所有的读写操作都是在一条主线程中完成的。当Redis用于高并发场景时,这条线程就变成了它的生命线。如果出现阻塞,哪怕是很短时间,对于应用来说都是噩梦。 导致阻塞问题的原因: 内在原因:不合理地使用API或数据结构、CPU饱和、持久化阻塞 阅读全文
posted @ 2018-06-04 22:16 BigJunOba 阅读(3192) 评论(0) 推荐(1)
摘要: 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础,哨兵和集群都是在复制的基础上实现高可用的。复制也是Redis日常运维的常见维护点。 阅读全文
posted @ 2018-06-04 22:15 BigJunOba 阅读(375) 评论(0) 推荐(0)
摘要: 一、RDB RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。 1.触发机制 (1)手动触发:save命令和bgsave命令 save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。 b 阅读全文
posted @ 2018-06-04 22:12 BigJunOba 阅读(298) 评论(0) 推荐(0)
摘要: 一、理论分析 在学习Redis中的Jedis这一部分的时候,要使用到Protostuff(Protobuf的Java客户端)这一序列化工具。一开始看到序列化这些字眼的时候,感觉到一头雾水。于是,参考了网上的很多资料,理解了Java序列化与反序列化(参考https://blog.csdn.net/wa 阅读全文
posted @ 2018-06-02 23:02 BigJunOba 阅读(16353) 评论(0) 推荐(4)
摘要: 在学习Redis的过程中,在学到Redis客户端Jedis的时候,考虑到能不能在ubuntu下用Vim编写Java程序并且能够运行呢? 于是,首先在网上调研了一番用Vim写Java程序的可实现性。 相对于我们熟悉的IDE来说,使用Vim编写程序并且在Ubuntu下通过命令行运行还是比较麻烦的: 首先 阅读全文
posted @ 2018-06-01 16:47 BigJunOba 阅读(3096) 评论(0) 推荐(0)
摘要: 一、客户端通信协议 二、Java客户端Jedis 1.获取Jedis Jedis属于Java的第三方开发包,在Java中获取第三方开发包通常有两种方式: 直接下载目标版本的Jedis-${version}.jar包加入到项目中。 使用集成构建工具,例如maven、gradle等将Jedis目标版本的 阅读全文
posted @ 2018-05-31 10:10 BigJunOba 阅读(635) 评论(0) 推荐(0)
上一页 1 ··· 40 41 42 43 44 45 46 47 48 ··· 50 下一页