-
redis-cli--hotkeys是基于LFU采样的轻量热Key发现工具,需启用allkeys-lfu/volatile-lfu策略,返回最多32个相对高频key,frequency为归一化值,非实时精确计数,须结合objectfreq、monitor等交叉验证。
-
哨兵故障转移实际耗时为2–30秒,并非毫秒级;“毫秒级”仅指心跳检测与投票过程。真实恢复时间受down-after-milliseconds配置(建议5000–10000ms)、哨兵多数派机制及客户端行为影响,需配合写前校验或代理层使用。
-
磁盘满是配置失当与监控缺位导致的事故信号,表现为RDB写入失败、AOF重写卡住等错误;根本原因是未限maxmemory、AOF重写阈值过松、过期键堆积及数据与日志混放同一分区。
-
预热时DB被打挂因未限流分片、全量查询触发慢查锁表及连接池耗尽;应按主键分页、加休眠、控制并发、Pipeline分批、设临时标记、渐进切流、拆分Hash结构并监控关键指标。
-
布隆过滤器不支持单元素删除,BF.EXISTS返回true时数据可能已不存在,导致缓存穿透;应改用支持CF.DEL的CuckooFilter或定期重建带时间戳的过滤器。
-
RedisPub/Sub不支持消息过期机制,因其是纯内存即时广播通道,消息不存储、无TTL、不落盘;需改用SET+EXPIRE、STREAM配合定时清理或ZSET实现带有效期的消息。
-
要定位被淘汰的key,需监控evicted_keys增量、expired_keys飙升情况,并结合Redis7.0+的MEMORYUSAGE与OBJECTFREQ抽样分析;allkeys-lru不安全,应优先用volatile-lru/lfu;LFU更耗CPU因频次衰减更新;验证key是否频繁淘汰可用PFADD+PFCOUNT埋点统计。
-
repl-timeout应设为P99RTT的2~3倍,如P99RTT为120ms则建议30秒;需协同调整repl-backlog-size、repl-backlog-ttl和tcp-keepalive,并验证sync_partial_ok上升及master_link_status稳定。
-
必须用Lua脚本做抢红包,因其能原子执行读取余额、扣减金额、写入中奖记录、更新过期时间等操作;客户端多步命令易因并发或网络中断导致脏数据。
-
不能。volatile-ttl仅在内存不足时随机采样少量带过期时间的key淘汰TTL最小者,并非定时批量清理;高QPS下写入快于淘汰易致OOM,需配合随机偏移、调优采样数、限流及兜底策略。
-
RedisPub/Sub不保存消息,断连即丢消息,无法满足即时通讯的离线兜底需求;必须用Stream(XADD/XREAD)持久化消息,Pub/Sub仅作在线实时广播通道。
-
要定位被淘汰的key,需监控evicted_keys增量、expired_keys飙升情况,并结合Redis7.0+的MEMORYUSAGE与OBJECTFREQ抽样分析;allkeys-lru不安全,应优先用volatile-lru/lfu;LFU更耗CPU因频次衰减更新;验证key是否频繁淘汰可用PFADD+PFCOUNT埋点统计。
-
Redis在SSD云盘上AOF重写或RDBsave卡顿,主因是文件系统磁盘屏障(barrier)强制全链路落盘,导致fsync延迟飙升;可通过mount和xfs_info检查barrier=1或data=ordered确认。
-
RPOPLPUSH是唯一能安全抢占List任务的原子操作,因其一步完成“从source弹出并推入destination”,避免LRPOP+LPUSH组合导致的任务丢失、重复或空返回误判。
-
缓存穿透本质是无效key频繁击穿至DB,需用BloomFilter在Redis层预检;其误判可控、内存极小,支持高效存在性判断;Redisson中应使用RBloomFilter并正确初始化,注意冷启动、误判率调优及数据一致性问题。