Redis原理及实战
文章平均质量分 77
记录Redis相关底层原理以及实战优化
DearSil
4年项目实战经验,头未秃,人未强,干就完了
展开
-
Redis相关缓存问题:雪崩,穿透
缓存雪崩其实有很多的原因,缓存服务器宕机,或者缓存服务器集群故障,等等,总体来说属于系统架构中的缓存部分架构失效,导致大量的请求到达持久层数据库,由数据库处理请求,但是数据库的每秒并发最高不能超过2000个,突然增大的流量访问可能会直接让数据库挂掉,此时dba 无论怎么重启都会导致数据库宕机,进而导致整个服务挂掉,按照下面的现象图说明:其实缓存雪崩这类的问题,并不是再生产环境中一定会出,但是一旦出现之后,往往造成的影响是巨大的。原创 2023-05-20 15:20:34 · 106 阅读 · 1 评论 -
Redis_cluster 核心机制说明
基于重定向的客户端,很消耗网络IO,因为大部分情况下,可能都会出现一次请求重定向,才能找到正确的节点,所以大部分的客户端,比如java redis客户端,就是jedis,都是smart的本地维护一份hashslot -> node 的映射表,缓存,大部分情况下,直接走本地缓存就可以找到hashslot -> node ,不需要通过节点进行moved重定向。原创 2023-05-20 11:50:32 · 165 阅读 · 1 评论 -
Redis_cluster工作原理及分布式算法
自动将数据进行分片,每个master 上放一部分数据提供内置的高可用支持,部分master 不可用时,还是可以继续工作的在Redis cluster架构下,每隔redis要放开两个端口号,比如一个是6379,另一个就是加了10000的端口号:1637916379 这个端口号是用来进行节点间通信的,也就是cluster bus的东西,集群总线,cluster bus的通信,用来进行故障检测,配置更新,故障转移授权等等。原创 2023-05-19 16:41:58 · 151 阅读 · 1 评论 -
Redis数据的持久化
Redis中默认有两种持久化方式:RDB,AOFRDB 持久化机制,对redis中的数据执行周期性的持久化AOF机制对每条写入命令为日志,以append-onlyu的模式写入一个日志文件中,再redis重启的时候,可以通过回放AOF日志中的所有写入指令,来重新构建整个数据集如果我们想要Redis仅仅作为纯内存的缓存使用,那么可以禁止RDB和AOF所有的持久化策略如果同时使用RDB和AOF两种持久化机制,那么在Redis重启的时候,会使用AOF来重新构建数据,因为AOF 中的数据更加完整。原创 2023-05-19 11:46:02 · 202 阅读 · 1 评论 -
Redis主从复制的原理以及高可用性总结
Redis slave启动的时候,会根据config 中配置的master node 的ip, host,run_id等获取到master node 的信息等Slave node 启动成功之后,会根据上述的信息去ping master node 如果可以ping 成功,则与master 建立socket 连接连接建立成功之后,master node会与slave node 进行一次full resynchronization (全量复制)原创 2023-05-15 14:50:31 · 79 阅读 · 2 评论 -
Redis_Sentinal 核心概念说明
哨兵会监听mastrer节点状态,如果说此时Sentinal判断master node现在已经宕机,实际上是会有两种宕机状态: Sdown 和 Odown。原创 2023-05-15 14:12:08 · 101 阅读 · 1 评论 -
Redis数据丢失情况,解决异步复制和脑裂导致的数据丢失
脑裂,也就是说某个master所在的机器突然翻脱离了正常的网络,跟其他slave机器不能连接,但是实际上的master 还存活着,此时哨兵可能就认为master 宕机了,然后开启选举,将其他的slave 切换成了master , 这个时候,集群里就会有两个master,也就是所谓的脑裂。因为旧master再次恢复的时候,会被当做一个slave挂到新的master上去,把自己的数据会清空,强制同步新的Master节点数据。主备切换的过程中,可能会导致数据丢失。异步复制导致的数据丢失。原创 2023-05-15 11:27:21 · 593 阅读 · 1 评论 -
Redis哨兵机制详解
哨兵是Redis集群架构中一个非常重要的组件,主要功能如下。原创 2023-05-15 10:06:49 · 270 阅读 · 1 评论 -
Redis复制的完整流程
master 和 slave 都会维护一个offset,master 会在自身不断累加offset,同时,slave 也会在自身不断累加offset, master 自身会保存每个slave 的offset,用来保存每次更新数据的具体位置,其实这个功能并不只是在全量复制的时候才会使用,而是在整个主从交互的流程中都在使用,这样才能识别到数据不一致的情况。master node在生成RDB时,会将所有新的写命令缓存到内存中,再Salve node保存了RDB之后,再输出新的写命令复制给salve node。原创 2023-05-14 18:06:26 · 152 阅读 · 0 评论 -
Redis不可用性以及基于哨兵机制的高可用性说明
如果你系统的服务端再全年99.99%的时间内都是可用的,那么这样的系统就叫做99.99%高可用性。原创 2023-05-14 17:44:43 · 89 阅读 · 0 评论