-
Redis布隆过滤器不支持动态扩容,BF.RESERVE设定的capacity和error_rate不可修改;扩容需手动迁移数据并切换key,参数选错易致内存激增或OOM。
-
Bitmap用1bit存每日签到状态,1万用户年数据仅13KB,String存“1”/“0”需3.6MB;需按年分key、用BITPOS+BITCOUNT算连续天数,offset须为小整数且避免客户端溢出。
-
缓存空值TTL推荐2–5分钟,用SETEX或set(key,"NULL",300,TimeUnit.SECONDS),避免永不过期或24小时;内容用"NULL"等明确标记,前置参数校验更早拦截无效请求。
-
SETNX不能单独用作分布式锁,因其无法原子性地设置值和过期时间,易导致死锁;必须用SETkeyvalueNXEXseconds原子命令,并配合唯一value和Lua脚本校验解锁。
-
Redisbgsave时内存翻倍并非复制业务数据,而是fork触发COW:内核仅复制页表,写入时才拷贝物理页,导致RSS暴涨;典型信号是used_memory_rss/used_memory比值骤升至2.5+且latest_fork_usec>500ms。
-
redis-cli的monitor命令可实时打印所有指令但仅限调试环境,因性能开销大、无过滤能力、输出非结构化,生产环境应禁用;推荐用slowlog(设slowlog-log-slower-than为0)替代。
-
Redis客户端重连易打挂新主库,因默认“失败即重试”导致连接风暴;需配置指数退避+随机抖动(如Lettuce用ExponentialBackoffRetry.withJitter)、Go端自定义DialContext重试逻辑,并控制初始延迟50–100ms、最大延迟≤3s、重试8–12次。
-
新消费者收不到旧消息是因为XGROUPCREATE默认从最新偏移($)开始消费,不自动回溯;需显式指定起始ID0或用XREADGROUPSTREAMSmystream0补读,且必须及时XACK避免重复分配。
-
sentinelmonitor三要素(master-name、IP、port)必须准确,缺一不可,否则哨兵无法发现主从拓扑;quorum是触发投票的最小同意数,非哨兵总数;密码需三端一致(requirepass/masterauth/auth-pass),ACL还需配置masteruser;down-after-milliseconds宜设3000–5000ms防误判;启动前须确保主从就绪,否则从节点被误标sdown。
-
查哨兵进程资源需用ps和top实时监控CPU与内存,关注RSS突增、%CPU峰值及线性上涨;结合日志分析+sdown/+odown频次、INFOSENTINEL状态(如sentinel_tilt、sentinel_running_scripts)定位真实压力源。
-
Jedissubscribe()会阻塞线程,必须在独立线程中调用;onMessage()是唯一消息处理入口;连接断开需手动重试;RedisMessageListenerContainer需设phase为Integer.MIN_VALUE以早初始化;Pythonredis-py要判type再取data并解码;频道名推荐小写点分隔,禁用通配符滥用;订阅端须加健康检查与自动恢复。
-
要定位被淘汰的key,需监控evicted_keys增量、expired_keys飙升情况,并结合Redis7.0+的MEMORYUSAGE与OBJECTFREQ抽样分析;allkeys-lru不安全,应优先用volatile-lru/lfu;LFU更耗CPU因频次衰减更新;验证key是否频繁淘汰可用PFADD+PFCOUNT埋点统计。
-
布隆过滤器必须前置到请求入口,如Web中间件或API网关,在接触Redis或数据库前完成校验;冷启动需预热合法ID,误判率宜设为1%;空值缓存须存"NULL"字符串并设5–300秒短过期;参数校验需在网关/Controller层强校验;需监控空值占比与误判率并告警。
-
slowlog是Redis唯一实时捕获慢命令的机制,为内存环形缓冲区,仅记录执行耗时超阈值的命令,不包含网络延迟与排队时间;默认阈值10ms,建议调至5ms,slowlog-max-len建议设为1024,并需CONFIGREWRITE持久化。
-
Redis延迟高但CPU正常通常是网络丢包或抖动所致,表现为redis-cli--latency毛刺飙升、ping标准差>10ms或丢包率>0.1%,需用tcpdump抓包分析重传与ACK丢弃,并排查云环境安全组、NAT会话老化及内核TCP参数配置。