-
appendfsyncalways会让Redis卡在磁盘上,因其每条命令都强制调用fsync()等待硬件确认落盘,使QPS被钉死在磁盘IOPS天花板;而everysec通过后台线程批量刷盘解耦主线程与I/O,大幅降低IOPS压力但引入秒级延迟毛刺。367 收藏 -
ZREM不能直接删除Geo数据,因为它只删除ZSET中的member名称,而非按经纬度范围删除;必须先用GEORADIUS等命令查询出目标member,再调用ZREM精确删除。366 收藏 -
ShedLock通过Redis的SETkeyvalueEXsecondsNX原子命令实现加锁,键为shedlock:{任务名},值为节点标识,TTL由lockAtMostFor控制;重复执行主因是Redis配置不一致、集群未适配、绕过AOP或TTL过短。366 收藏 -
LPUSH+BRPOP构成FIFO阻塞队列,兼容Redis2.0+;但消费失败会导致消息丢失,适合允许少量丢失的场景,强可靠性需求应改用Stream。363 收藏 -
RedisSentinel进程挂了由systemd兜底重启,因其默认可用、配置简洁、日志集成好;需配置Restart=always、明确--sentinel参数、检查端口绑定、配置语法及目录权限,并通过redis-cli验证哨兵实际工作状态。361 收藏 -
要定位被淘汰的key,需监控evicted_keys增量、expired_keys飙升情况,并结合Redis7.0+的MEMORYUSAGE与OBJECTFREQ抽样分析;allkeys-lru不安全,应优先用volatile-lru/lfu;LFU更耗CPU因频次衰减更新;验证key是否频繁淘汰可用PFADD+PFCOUNT埋点统计。360 收藏 -
根本原因是COW导致RSS内存暴涨触碰maxmemory上限而被迫淘汰;bgsave时fork子进程触发Copy-On-Write,父进程修改内存页即复制物理页,临近maxmemory时瞬时内存增长直接触发淘汰。360 收藏 -
volatile-lru是仅在带TTL的key中按LRU算法驱逐的内存淘汰策略,不处理未设置过期时间的key;会话key必须显式设置TTL,否则成为永生key导致内存溢出。358 收藏 -
notify-keyspace-events开启后会显著增加CPU开销,因其在每个命令执行后强制执行事件广播逻辑,即使无人订阅;高写入场景下DEL、EXPIRE、SET等操作均触发线性增长的事件生成与分发。357 收藏 -
不能直接升级所有节点内核,因内核版本差异会导致epoll行为、transparent_hugepage策略、net.core.somaxconn等参数不一致,引发连接拒绝、延迟毛刺或集群握手失败。357 收藏 -
maxclients作用于每个Redis实例(节点)而非整个集群,集群中6个节点需单独配置;其实际生效值取配置值与系统ulimit-n的较小值,且slave节点因承担复制和读请求双重压力更易触顶。354 收藏 -
缓存击穿需用Redis原子命令SETkeyvalueEXsecondsNX加key级互斥锁,配合Lua脚本安全解锁;推荐RedissonRLock自动续期,空值缓存需权衡数据一致性与性能。353 收藏 -
磁盘满是配置失当与监控缺位导致的事故信号,表现为RDB写入失败、AOF重写卡住等错误;根本原因是未限maxmemory、AOF重写阈值过松、过期键堆积及数据与日志混放同一分区。352 收藏 -
内存淘汰不会触发invalidation消息,因其是后台异步驱逐,不走命令执行路径,tracking模块无法感知;只有DEL、SET、EXPIRE等显式变更命令才会触发。351 收藏 -
AOF重写期间used_memory_rss突然翻倍,根本原因是Redis启用双缓冲机制并触发COW大量页复制。主进程同时维护新旧AOF缓冲区,大Key修改或哈希扩容导致RSS飙升1.5–2倍,OOMkiller可能介入。350 收藏