-
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并正确初始化,注意冷启动、误判率调优及数据一致性问题。
-
HSET查单个字段更快,SET写整条数据更省网络;字段少且固定用HSET,动态多变或需原子替换用SET;LIST队列易丢消息,推荐STREAM;ZSET排行榜慎用浮点score;大SET内存开销大,慎用SMEMBERS。
-
LTRIM是限制RedisList长度的唯一可靠方式,因其原子性、精准截断和内存即时释放特性;必须配合LPUSH使用,错误参数会清空列表,高并发下推荐Lua脚本保障原子性。
-
根本原因是COW导致RSS内存暴涨触碰maxmemory上限而被迫淘汰;bgsave时fork子进程触发Copy-On-Write,父进程修改内存页即复制物理页,临近maxmemory时瞬时内存增长直接触发淘汰。
-
大key在Redis主从同步中会触发复制断连,表现为从库state由online突变为offline、日志反复出现Connectionwithmasterlost和Resyncingfrommaster,根源是RDB/AOF传输超时或内存溢出。
-
min-slaves-to-write是主从切换丢数据时首要排查项,它控制主节点在合格从节点不足时拒绝写入,但需配合min-slaves-max-lag和真实复制状态(state=online、lag≤阈值)才生效。