欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > Redis

Redis

2025/5/16 13:32:33 来源:https://blog.csdn.net/qq_51581562/article/details/146748376  浏览:    关键词:Redis

本文记录学习redis的集群与持久化策略,于2025年3月30日(周日)开始

redis集群

redis如何实现服务高可用?有一下三点:

主从复制

主从复制的三种模式:

1. 全量复制;

2. 基于长连接的命令传输;

3. 增量复制;

全量流程示意图:

 增量:

总结:

1. 主从服务器第一次同步的时候,就是采用全量复制,此时服务器会有两个耗时的地方,分别是生成RDB文件和传输RDN文件。

2. 第一次同步完,主从服务器都会维护着一个长连接,用于master服务器后续接收到的写命令传播到slave服务器;

3. 如果遇到断网,增量复制就派上用场了。

哨兵模式

目的:实现主从节点故障转移。

它会检测主节点是否存活,如果主节点挂了,就会选举一个从节点切换为主节点,并且把新主节点的相关信息通知给从节点和客户端。

哨兵节点主要负责三件事情:监控;选主;通知。

哨兵节点通过redis的发布者 / 订阅者模式,哨兵之间可以相互感知,相互连接,组成哨兵集群。

1. 第一轮投票:判断主节点下线:

2. 第二轮投票:选出哨兵leader:

3. 由哨兵leader进行主从故障转移:

切片集群模式

redis持久化策略

redis共有三种数据持久化的方式:

1. AOF日志;

2. RDB快照;

3. 混合持久化方式。

AOF日志

记录操作命令;(Append Only File)

redis写入AOF日志的过程,如下图:

三种回写硬盘策略:

Always,Everysec,No.

AOF重写机制:

redis提供AOF重写机制,当AOF文件的大小超过所设定的阈值后,redis就会启用AOF重写机制,来压缩AOF文件。

RDB快照

记录某一瞬间的内存数据。

redis提供两个命令来生成RDB文件,分别是save和bgsave,区别在于是否在 [主线程] 里执行:

1. save:在主线程生成RDB文件,由于和执行操作命令在同一线程,所以,当写入RDB文件时间太长,会阻塞主线程

2. bgsave:会创建一个子进程来生成RDB文件,这样可以避免主线程的阻塞

save 900 1
save 300 10
save 60 10000

别看选项名叫save,实际上执行的是bgsave命令。只要满足上面条件的任意一个,就会执行bgsave,它们的意思分别是:

900s之内,对数据库进行了至少一次修改;

300s之内,对数据库进行了至少10次修改; 等

混合持久化方式

将RDB和AOF合体使用,该方法叫混合持久化。

开启混合持久化功能,在redis配置文件修改配置项为yes:

aof-use-rdb-preamble yes

开启混合持久化后:

1. 在AOF重写日志时,fork出来的重写子进程会先将主线程共享的内存数据以RDB方式写入到AOF文件;

2. 然后主线程处理的操作命令会被记录在重写缓存区里,重写缓存区里的增量命令会以AOF方式写入到AOF文件;

3. 写入完成后,通知主进程将含有RDB格式和AOF格式的AOF文件替换掉旧的AOF文件。

redis数据一致性

写策略

1. 更新数据库;

2. 删除缓存(有可能会失败,解决办法:引入消息队列,有重试机制)

读策略

1. 如果读取命中缓存,从缓存拿数据;

2. 如果读取没有命中,则从数据库拿数据,再写入缓存。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词