Redis技术文章
-
repl-backlog-ttl是Redis主节点在无从节点连接时自动释放复制积压缓冲区的时间阈值,默认3600秒;超时后清空backlog,导致重连从节点无法部分同步而触发开销巨大的全量同步。472 收藏 -
没有被废弃。LRU在Redis4.0后仍为默认策略之一,6.x、7.x持续优化;LFU是新增而非替代选项;LRU候选池采样逻辑微调但未重构,maxmemory-samples默认值从5升至10再优化分布;lru字段仍为24位,精度受限于194天周期与毫秒级取模,扩展会显著增加内存开销与降低缓存效率。469 收藏 -
不会阻塞。RDB持久化由fork()子进程执行,主线程继续处理请求;依赖Linux内核写时复制(COW)机制,fork后父子进程共享物理内存页,仅在修改时才复制对应页,保证子进程读取fork时刻快照,但高写入会加剧COW开销。469 收藏 -
Redis集群不自动随机化过期时间,需业务层实现;限流须在应用层或网关层统一控制;热点key需加扰动后缀分散分片;三者叠加(集群+随机过期+限流)且随机范围≥±5%才有效防雪崩。469 收藏 -
+sdown表示单个哨兵认定主节点失联,+odown才是触发故障转移的共识临界点;两者时间差暴露网络或配置问题,+odown后还需经选举、选从库、提升等步骤才能完成切换。465 收藏 -
Redis从库默认只读,slave-read-onlyyes是防意外写入的保险栓;设为no后从库可写但导致主从数据不一致,因写命令不回传主库且故障转移会扩散脏数据。464 收藏 -
本文用 Redis Bitmap 实现用户签到:用 SETBIT 写入每天状态,用 GETBIT 查询当天是否签到,用 BITCOUNT 快速统计月签到天数,并补充连续签到和键设计建议。464 收藏 -
本文从 Redis 分布式锁偶发并发进入的现场出发,复现旧请求误删新锁的问题,定位锁值缺少身份标记的根因,并用 token 校验方式修复释放锁流程。464 收藏 -
Redis6+的io-threads应设为2~8,不超过磁盘队列深度的2倍,且必须保持io-threads-do-readsno;它仅加速写入内核页缓存,不加速fsync,设得过多反而加剧IOWAIT和延迟。463 收藏 -
Redis4.0起,24位lru字段在LFU模式下拆为高16位ldt(分钟级时间戳)和低8位logc(对数计数器),ldt=(time_t/60)&0xFFFF,logc初始为5并用概率递增算法更新。461 收藏 -
集群模式下slave-read-onlyyes无效,因集群协议绕过主从配置;必须用readonly命令开启连接级只读,使从节点响应本主槽读请求。461 收藏 -
应先检查是否连接泄露,再调整maxclients:通过redis-cliclientlist确认连接是否持续增长,修复Jedis未close问题;若确需扩容,须同步调高系统ulimit-n并重启Redis。460 收藏 -
必须同时排除RedisAutoConfiguration和RedisRepositoriesAutoConfiguration,否则因后者依赖redisTemplate而启动失败;exclude参数需传入Class数组,配置文件中须正确书写全限定名并避免缩进错误,且需清理残留Redis属性和手动Bean。459 收藏 -
RedisCluster默认不支持传统Pub/Sub跨节点广播,因频道按slot分片且gossip协议不传播订阅状态,SUBSCRIBE仅在本地节点生效;根本原因在于集群设计只负责数据分片,不实现消息路由。459 收藏 -
Pub/Sub频道命名必须带租户前缀,采用三段式结构{租户标识}:{业务域}:{实体ID},禁用裸频道和通配符泛订阅;ACL需按前缀精确控制,显式授权+subscribe/+publish;TLS与消息体加密必须同时启用;Pub/Sub不可替代可靠队列,应改用Stream或List。457 收藏