Redis专题(一)

张开发
2026/4/4 3:51:56 15 分钟阅读
Redis专题(一)
1. 主从部署主从复制主要⽤于实现数据的冗余备份和读分担并不是真正的高可用。一个主节点一个或者多个从节点。同步数据的方向单向 只能主节点到从节点。作用数据冗余除了数据持久化之外的一种数据冗余方式。故障恢复主节点出现问题从节点提供服务。可以手动切换。负载均衡主节点写从节点读。非常适合写少读多的场景。高可用的基石主从复制是哨兵模式和集群能使用的基础。缺点主节点同步数据到从节点存在延时特别是从节点越来越多延时会越严重。主节点宕机从节点要手动切换到主节点不能自动切换。2.哨兵部署Sentinel原理哨兵模式是通过独立的哨兵节点上的哨兵进程来实现的。哨兵进程会监控主节点和从节点的状态。当哨兵领导者通过心跳监控主观的判断主节点是否可用并且当超过选举个数的哨兵节点也判断认为该主节点存在问题大部分哨兵节点都同意下线该主节点就客观下线了。哨兵领导者会执行故障转移从当前的从节点中选出一个新的主节点并将其他节点切换到新的主节点为系统提供服务。哨兵节点会通知客户端新的主节点位置使其能与新的主节点建立连接。如果是从节点出现故障哨兵节点会让他先下线等恢复正常了再重新加入集群。确认主节点过滤掉不健康的下线或断线没有回复过哨兵ping响应 的从节点选择从节点优先级最⾼的选择复制偏移量最⼤此指复制最完整的从节点当主节点出现故障 由领导者负责处理主节点的故障转移。建议哨兵节点应该是多个奇数个构成哨兵集群保证高可用哨兵节点的配置是一致的哨兵模式必不能保证数据完全不丢失主要有以下几点原因主节点的故障转移时需要时间的。从节点全部故障或者在故障转移之前都失联将没有从节点升到主节点。3. 集群部署Redis集群部署的最小架构是3个主节点3个从节点每个主节点至少一个从节点。整个数据集会被自动分割到多个节点每个主节点都可以对外提供读服务和写服务。每个键通过CRC16算法对16384个哈希槽取模——CRC16(KEY)%16384 来确定其所属槽。客户端访问任意节点如果计算出是属于本节点的就直接处理不是的话返回MOVED 重定向客户端再去连接正确的节点。当然客户端也可以缓存槽位分布表减少定向次数。节点A向节点B发送心跳检测超时没有收到响应就会标记节点B疑似下线PFAIL多数的主节点确认后就可以标记为已下线FAIL。主节点故障从节点等待延时时间发起选举获取多数投票就可以成为新的主节点接管原来主节点的槽更新集群的配置。4. Redis的核心数据结构1String——底层是动态字符串常用的场景计数自增 INCR 、自减DECR分布式锁 SET product:10001 true ex 10 nx //nx保证互斥只有一个客户端能设置成功PX设置超时防止死锁。释放锁之前DEL product:10001要先检查是否是当前锁避免误删其他客户端的锁。2list——压缩链表、双向链表常用的数据结构Stack(栈) LPUSH LPOPQueue(队列 LPUSH RPOPBlocking MQ(阻塞队列 LPUSH BRPOP常见应用场景签到列表、简化版的MQ注意点大KEY因为底层是双向链表所以头尾操作方便中间通过索引获取值性能差。3Hash——哈希表、压缩列表常用2种一个是放JSON 二是HASH分字段存储比如余额表操作因为变化的是余额用第二种方式就会更方便。注意点过期的功能只能用在key上。4set——哈希表、整数数组存放不重复的集合。适合全局去重的操作以及抽奖的场景。5zset——压缩列表、跳表有序集合适合排行榜的场景。跳表将有序链表改造为支持“折半查找”算法可以进行快速的增删查找操作。

更多文章