@@ -110,6 +110,8 @@ Redis 与 Memcached 的**差异**:
110110
111111通过以上分析,可以看出,Redis 在很多方面都占有优势。因此,绝大多数情况下,优先选择 Redis 作为分布式缓存。
112112
113+ ![ ] ( https://raw.githubusercontent.com/dunwu/images/master/archive/2026/02/4d3343ee229804d3c4fd23c9822aff29.jpg )
114+
113115::: tip 扩展
114116
115117[ 《脚踏两只船的困惑 - Memcached 与 Redis》] ( https://www.imooc.com/article/23549 )
@@ -416,6 +418,8 @@ Redis 支持非严格的事务,其事务不支持回滚。[`MULTI`](https://re
416418
417419` WATCH ` 可以用于创建 Redis 没有内置的原子操作。
418420
421+ ![ ] ( https://raw.githubusercontent.com/dunwu/images/master/archive/2026/02/28394fb19243eead19252521a4cef9f5.jpg )
422+
419423举个例子,以下代码实现了原创的 ` ZPOP ` 命令,它可以原子地弹出有序集合中分值(` score ` )最小的元素:
420424
421425``` shell
@@ -519,6 +523,8 @@ Redis 从 2.6 版本开始支持执行 Lua 脚本,它的功能和事务非常
519523
520524Redis 的主从复制过程主要分为** 建立连接、数据同步、命令传播** 三个阶段。
521525
526+ ![ ] ( https://raw.githubusercontent.com/dunwu/images/master/archive/2026/02/fa7bf64cc68abaa3c4fe79090b05bae6.png )
527+
522528::: info 建立连接
523529:::
524530
@@ -642,6 +648,8 @@ Redis Cluster 应用了 [Raft 协议](https://ramcloud.atlassian.net/wiki/downlo
642648
643649** Redis Cluster = 虚拟哈希槽分区(数据分布) + 主从复制(数据冗余) + Raft 式故障转移(高可用) + 多数派防脑裂(一致性)**
644650
651+ ![ ] ( https://raw.githubusercontent.com/dunwu/images/master/archive/2026/02/6dbb6bedcb2405edd2db642e3fe5a9b3.jpg )
652+
645653::: info 集群架构
646654:::
647655
@@ -717,6 +725,10 @@ HASH_SLOT = CRC16(KEY) mod 16384
717725
718726![ ] ( https://raw.githubusercontent.com/dunwu/images/master/cs/database/redis/redis-ask.png )
719727
728+ ** MOVED vs. ASK**
729+
730+ ![ ] ( https://raw.githubusercontent.com/dunwu/images/master/archive/2026/02/386c33206cdceab7e5a733e271a76bd4.png )
731+
720732::: info 故障转移
721733:::
722734
@@ -809,6 +821,8 @@ Redis 解决脑裂的思路: 通过配置限制主节点的写操作条件,
809821
810822并不能。假设在极限条件下,某主节点发生临时故障,哨兵判断其下线,开始发起选举。选举进行中,主节点恢复,此时它还有半数以上的从节点,仍能持续写入。当哨兵选举完毕,并选出新的主节点,旧主节点需要被强制认主新主节点,其在选举过程中写入的数据会被覆盖,导致了数据不一致。
811823
824+ ![ ] ( https://raw.githubusercontent.com/dunwu/images/master/archive/2026/02/1e1614f6d492d01dc5a48fac9cc956f2.jpg )
825+
812826## Redis 架构
813827
814828### 【中等】Redis 为什么快?⭐⭐
@@ -852,9 +866,9 @@ Redis 并非真的只有单线。
852866
853867为了提高网络 I/O 的并行度,Redis 6.0 对于网络 I/O 采用多线程来处理。但是,对于命令的执行,Redis 仍然使用单线程来处理。
854868
855- Redis 官方表示, ** Redis 6.0 版本引入的多线程 I/O 特性对性能提升至少是一倍以上 ** 。
869+ ![ ] ( https://raw.githubusercontent.com/dunwu/images/master/archive/2026/02/5587520b37fed801d2bcf6ac17acca00.jpg )
856870
857- ![ ] ( https://raw.githubusercontent.com/dunwu/images/master/archive/2023/09/e06ceb9d55034251ad2b584c24f23417.png )
871+ Redis 官方表示, ** Redis 6.0 版本引入的多线程 I/O 特性对性能提升至少是一倍以上 ** 。
858872
859873### 【中等】什么是 Redis 模块?有什么用?
860874
@@ -970,6 +984,12 @@ Redis 提供两种持久化方式:
970984
971985** 巧妙点** :去中心化设计,避免单点瓶颈,支持动态扩缩容。
972986
987+ ### 【中等】Redis 的 Pub/Sub 功能是什么?
988+
989+ ** Pub/Sub = 发布订阅模式,消息生产者(Publisher)发消息到频道(Channel),所有订阅者(Subscriber)实时接收** 。
990+
991+ ![ ] ( https://raw.githubusercontent.com/dunwu/images/master/archive/2026/02/ba727edcc18e1c63f85c3b62df20af79.jpg )
992+
973993## Redis 优化
974994
975995### 【中等】为什么会有慢查询命令?
@@ -1214,4 +1234,4 @@ rdb dump.rdb -c memory --bytes 10240 -f redis.csv # 导出 >10KB 的 Key 到 CS
12141234- ** 负载均衡** :
12151235
12161236 - ** Redis Cluster** :分散热点 Key 到不同节点
1217- - ** 代理层** :Twemproxy / Redis Proxy / Nginx 实现负载均衡
1237+ - ** 代理层** :Twemproxy / Redis Proxy / Nginx 实现负载均衡
0 commit comments