Redis
文章平均质量分 50
ballenlee
这个作者很懒,什么都没留下…
展开
-
Redis 高并发原理
1 单线程模型Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。2 单线程模...原创 2017-12-14 12:18:58 · 3146 阅读 · 0 评论 -
Redis 持久化
Redis持久化有两种方式,RDB和AOF,持久化通常都会fork一个子进程做备份。 RDB使用一次性生成内存快照方式,压缩且文件更紧凑,读取RDB恢复速度快;但是每次RDB是全量备份,速度慢,无法做到实时持久化,通常用于数据冷备和复制传输。 AOF通过追加命令到文件实现实时(秒级)持久化,极端情况丢失2s的数据;因为不断追加命令,文件会越来越大,要定期执行重写AOF文件降低文...原创 2018-02-01 16:21:40 · 91 阅读 · 0 评论 -
Redis 主从复制
Redis主从复制过程,由从节点发起复制请求,默认情况从节点是只读的1. 从节点发起复制请求,保存主节点信息2. 主从建立socket连接3. 从节点发送ping命令4. 主节点权限验证(默认关闭)5. 同步数据6. 持续复制 其中同步数据又分为全量复制和部分复制 全量复制,从节点第一次复制必须为全量复制,全量复制过程为从节点发起,主节点保持RDB文件,...原创 2018-02-01 16:39:07 · 93 阅读 · 0 评论 -
Redis Sentinel
Redis Sentinel 是 redis的高可用实现方案:故障发现、故障自动转移、配置中心、客户端通知,Jedis原生支持,客户端在连接时,实际连接的Sentinel集合,当Sentinel观测到变化和故障转移后,会Pub到client端,实际使用了redis的pub/sub功能。 1. 主节点故障,主从复制失败2. Sentinel通过定期监控,发现主节点故障3. 多个S...原创 2018-02-01 21:24:04 · 111 阅读 · 0 评论 -
Redis Cluster集群水平扩展
Redis分布式方案一般有两种(1)客户端分区,优点是分区逻辑可控,缺点是需要客户端处理数据路由、高可用、故障转移等。(2)代理方案,优点是简化客户端逻辑和升级,缺点是加重架构复杂性和性能损耗。Redis Cluster是官方提供的分布式解决方案,从3.0版本正式推出,和以上两种方案都不太一样,采用了虚拟槽分区,分区方式采用了hash分区,它并没有使用一致性hash(增减节点会导致...原创 2018-02-05 21:06:27 · 361 阅读 · 0 评论 -
Redis Cluster集群故障转移
1. 故障发现 1.1 主观下线,Redis集群通过Gossip的ping,pong消息来互相通信,比如A节点向B节点发送ping,如果在 cluster-node-timeout时间内一直失败,则节点A会认为B是主观下线,同时将此状态信息在集群内广播 1.2 客观下线,当半数以上的持有槽的主节点都标记B是主观下线时,触发客观下线流程。 1.2.1 通...原创 2018-02-06 21:47:59 · 668 阅读 · 0 评论 -
Redis 缓存问题及解决方案
1. 缓存穿透 指查询一个不存在的对象,缓存层和存储层都不会命中,可以采用缓存空对象或者bloom filter解决,两者的解决典型场景不同,bloom filter适用于数据相对固定实时性低的场景。2. 无底洞优化 无底洞问题指水平扩展,性能没有提升甚至会下降,这是因为客户端一次批量操作会涉及很多网络操作,随着节点增多,耗时会变大,网络节点多对节点性能也有影响。优化方...原创 2018-02-07 15:49:34 · 200 阅读 · 0 评论