-
在Redis集群中查某个key的实时内存占用需先定位其所在slot和节点:用CLUSTERKEYSLOT算slot号,CLUSTERSLOTS查对应主节点IP:PORT,再连该节点执行MEMORYUSAGE;因官方redis-cli--cluster不支持透传该命令,且结果为估算值,需注意偏差与重试机制。482 收藏 -
Redis禁止BGSAVE与BGREWRITEAOF并发执行,是为避免双子进程争抢CPU、I/O、COW内存页及fsync队列;前者返回错误,后者被排队;no-appendfsync-on-rewriteyes可缓解AOF重写时主进程fsync阻塞,但对BGSAVE无效。478 收藏 -
根本原因是Redis集群要求多键操作的key必须位于同一slot,而HashTag(如{user:1}:profile)通过仅哈希花括号内内容实现强制同槽,但需命令本身支持多key且全链路保留括号语义。476 收藏 -
用iptables模拟Redis哨兵网络分区需双向封禁节点间通信(INPUT+OUTPUT),匹配6379/26379端口,确保Quorum计算失效;恢复时须精准删除规则而非清空链,避免锁死服务器。467 收藏 -
必须显式配置client-output-buffer-limit,否则普通客户端无输出缓冲区上限,易致内存耗尽;需为normal、pubsub等类型分别设置hard/soft限制,尤其pubsub缓冲区最易失控。460 收藏 -
必须配合日期动态生成key,因Bitmap无时间维度,共用key会丢失日期信息且导致单key膨胀、RDB/AOF暴增、主从延迟;用户ID须映射为非负整数offset,避免直接强转;BITCOUNT偏高多因key未清理或offset错位;5000万DAU下Bitmap体积约6.25MB,但需防ID稀疏浪费内存。458 收藏 -
Redis布隆过滤器不支持动态扩容,BF.RESERVE设定的capacity和error_rate不可修改;扩容需手动迁移数据并切换key,参数选错易致内存激增或OOM。457 收藏 -
缓存击穿是热点key过期瞬间并发请求涌向DB,需用逻辑过期、随机过期时间、分级预热、互斥锁及行为验证来防控。455 收藏 -
主节点磁盘满导致bgsave失败,进而使从节点全量同步卡在wait_bgsave状态;需通过df-h查Redis实际dir路径磁盘使用率、日志中“Nospaceleftondevice”报错及infopersistence中rdb_bgsave_in_progress异常确认。436 收藏 -
LFU频率计数器非线性增长,由lfu-log-factor和lfu-decay-time共同调控:访问按概率递增且增幅随当前值增大而衰减,初始值为5、上限255;衰减每lfu-decay-time分钟执行一次右移1位。424 收藏 -
RedisCluster故障转移由主节点失联且多数主节点投票确认触发;从节点需满足复制偏移量达标、获多数主节点投票才能当选新主。423 收藏 -
Bitmap用1bit存每日签到状态,1万用户年数据仅13KB,String存“1”/“0”需3.6MB;需按年分key、用BITPOS+BITCOUNT算连续天数,offset须为小整数且避免客户端溢出。401 收藏 -
SETNX不能单独用作分布式锁,因其无法原子性地设置值和过期时间,易导致死锁;必须用SETkeyvalueNXEXseconds原子命令,并配合唯一value和Lua脚本校验解锁。392 收藏 -
正确做法是用EVAL执行Lua脚本保证原子性,结合PTTL和TIME实现毫秒级令牌补充,避免客户端时间依赖;Redis6.2+可用CL.THROTTLE简化实现。377 收藏 -
会,大量key同时过期会引发CPU尖峰、内存延迟释放和请求抖动;Redis通过每100ms随机抽样检查过期key,超25%过期则连续多轮高强度扫描删除,导致延迟飙升甚至超时。375 收藏