146-Redis核心技术与实战-146-Redis核心技术与实战
- 书名: 146-Redis核心技术与实战
- 作者: 146-Redis核心技术与实战
- 简介:
- 出版时间
- ISBN:
- 分类:
- 出版社:
高亮划线
146-Redis核心技术与实战
开篇词 | 这样学Redis,才能技高一筹
01 | 基本架构:一个键值数据库包含什么?
02 | 数据结构:快速的Redis有哪些慢操作?
03 | 高性能IO模型:为什么单线程Redis能那么快?
04 | AOF日志:宕机了,Redis如何避免数据丢失?
05 | 内存快照:宕机后,Redis如何实现快速恢复?
-
📌 Redis 4.0 中提出了一个混合使用 AOF 日志和内存快照的方法。简单来说,内存快照以一定的频率执行,在两次快照之间,使用 AOF 日志记录这期间的所有命令操作。这样一来,快照不用很频繁地执行,这就避免了频繁 fork 对主线程的影响。而且,AOF 日志也只用记录两次快照间的操作,也就是说,不需要记录所有操作了,因此,就不会出现文件过大的情况了,也可以避免重写开销。如下图所示,T1 和 T2 时刻的修改,用 AOF 日志记录,等到第二次做全量快照时,就可以清空 AOF 日志,因为此时的修改都已经记录到快照中了,恢复时就不再用日志了。 ^7-15224-16229
- ⏱ 2024-05-28 12:41:34
-
📌 最后,关于 AOF 和 RDB 的选择问题,我想再给你提三点建议:数据不能丢失时,内存快照和 AOF 的混合使用是一个很好的选择;如果允许分钟级别的数据丢失,可以只使用 RDB;如果只用 AOF,优先使用 everysec 的配置选项,因为它在可靠性和性能之间取了一个平衡。 ^7-17820-18521
- ⏱ 2024-05-28 12:42:33
06 | 数据同步:主从库如何实现数据一致?
-
📌 其实是有的,这就是“主 - 从 - 从”模式。在刚才介绍的主从库模式中,所有的从库都是和主库连接,所有的全量复制也都是和主库进行的。现在,我们可以通过“主 - 从 - 从”模式将主库生成 RDB 和传输 RDB 的压力,以级联的方式分散到从库上。简单来说,我们在部署主从集群的时候,可以手动选择一个从库(比如选择内存资源配置较高的从库),用于级联其他的从库。然后,我们可以再选择一些从库(例如三分之一的从库),在这些从库上执行如下命令,让它们和刚才所选的从库,建立起主从关系。[插图]这样一来,这些从库就会知道,在进行同步时,不用再和主库进行交互了,只要和级联的从库进行写操作同步就行了,这就可以减轻主库上的压力,如下图所示:[插图] ^8-12704-13994
- ⏱ 2024-05-28 12:52:48
-
📌 当主从库断连后,主库会把断连期间收到的写操作命令,写入 replication buffer,同时也会把这些操作命令也写入 repl_backlog_buffer 这个缓冲区。 ^8-17029-17117
- ⏱ 2024-05-28 12:58:27
-
📌 我特别建议你留意一下 repl_backlog_size 这个配置参数。如果它配置得过小,在增量复制阶段,可能会导致从库的复制进度赶不上主库,进而导致从库重新进行全量复制。所以,通过调大这个参数,可以减少从库在网络断连时全量复制的风险。 ^8-23787-23905
- ⏱ 2024-05-28 12:59:49
07 | 哨兵机制:主库挂了,如何不间断服务?
-
📌 哨兵其实就是一个运行在特殊模式下的 Redis 进程,主从库实例运行的同时,它也在运行。哨兵主要负责的就是三个任务:监控、选主(选择主库)和通知。 ^9-3477-3550
- ⏱ 2024-05-28 13:02:51
-
📌 我们再回顾下这个流程。首先,哨兵会按照在线状态、网络状态,筛选过滤掉一部分不符合要求的从库,然后,依次按照优先级、复制进度、ID 号大小再对剩余的从库进行打分,只要有得分最高的从库出现,就把它选为新主库。 ^9-19741-19843
- ⏱ 2024-05-28 19:26:24
08 | 哨兵集群:哨兵挂了,主从库还能切换吗?
09 | 切片集群:数据增多了,是该加内存还是加实例?
-
📌 fork 在执行时会阻塞主线程。数据量越大,fork 操作造成的主线程阻塞的时间越长。 ^11-1809-1853
- ⏱ 2024-05-28 20:02:13
-
📌 在 Redis Cluster 方案中,一个切片集群共有 16384 个哈希槽,这些哈希槽类似于数据分区,每个键值对都会根据它的 key,被映射到一个哈希槽中 ^11-9566-9645
- ⏱ 2024-05-28 20:08:28
10 | 第1~9讲课后思考题答案及常见问题答疑
-
📌 主库会给每个从库建立一个客户端,所以 replication buffer 不是共享的,而是每个从库都有一个对应的客户端。 ^12-30614-30675
- ⏱ 2024-05-29 07:38:36
-
📌 repl_backlog_buffer 是一块专用 buffer,在 Redis 服务器启动后,开始一直接收写操作命令,这是所有从库共享的。主库和从库会各自记录自己的复制进度,所以,不同的从库在进行恢复时,会把自己的复制进度(slave_repl_offset)发给主库,主库就可以和它独立同步。 ^12-30858-31006
- ⏱ 2024-05-29 07:39:27