-
ZREVRANGEBYSCORE不适用于超时任务检测,因其按score降序返回,而超时检测需升序查找score≤当前时间戳的任务;正确做法是用ZRANGEBYSCOREtasks-inf[current_timestamp]配合Lua原子执行扫描与删除,并确保score为高精度到期时间戳以避免排序混乱和堆积性能问题。370 收藏 -
redis-cli--clusterinfo仅提供槽位、键数和从节点数的粗粒度分布,无法反映真实CPU/内存负载;需结合INFOmemory、SLOWLOG和INFOstats交叉验证,因slot均匀不等于负载均匀。369 收藏 -
appendfsyncalways会让Redis卡在磁盘上,因其每条命令都强制调用fsync()等待硬件确认落盘,使QPS被钉死在磁盘IOPS天花板;而everysec通过后台线程批量刷盘解耦主线程与I/O,大幅降低IOPS压力但引入秒级延迟毛刺。367 收藏 -
LPUSH+BRPOP构成FIFO阻塞队列,兼容Redis2.0+;但消费失败会导致消息丢失,适合允许少量丢失的场景,强可靠性需求应改用Stream。363 收藏 -
RedisSentinel进程挂了由systemd兜底重启,因其默认可用、配置简洁、日志集成好;需配置Restart=always、明确--sentinel参数、检查端口绑定、配置语法及目录权限,并通过redis-cli验证哨兵实际工作状态。361 收藏 -
根本原因是COW导致RSS内存暴涨触碰maxmemory上限而被迫淘汰;bgsave时fork子进程触发Copy-On-Write,父进程修改内存页即复制物理页,临近maxmemory时瞬时内存增长直接触发淘汰。360 收藏 -
不能直接升级所有节点内核,因内核版本差异会导致epoll行为、transparent_hugepage策略、net.core.somaxconn等参数不一致,引发连接拒绝、延迟毛刺或集群握手失败。357 收藏 -
缓存击穿需用Redis原子命令SETkeyvalueEXsecondsNX加key级互斥锁,配合Lua脚本安全解锁;推荐RedissonRLock自动续期,空值缓存需权衡数据一致性与性能。353 收藏 -
dump.rdb文件越积越多是因为Redis默认不自动清理旧快照,每次bgsave生成新文件但保留旧文件,需依赖外部脚本按时间戳安全清理。344 收藏 -
RedisCluster非开箱即用高可用方案,需主动设计拓扑、预估槽位、处理跨槽限制;常见连不上因客户端未启集群模式、总线端口未开放、配置用localhost、多key未同槽、全局命令不支持、脚本事务受槽约束、slot缓存更新滞后等。342 收藏 -
Redis哨兵模式不支持自动伸缩,其核心能力仅限于监控存活、触发故障转移和提供主节点地址;它不参与节点增删、数据分片或路由更新。339 收藏 -
哨兵选主按slave-priority、复制偏移量、RunID三步筛选:优先过滤priority为0的节点;再比对offset,越大越优;最后按RunID字典序升序取首个。339 收藏 -
主节点配置requirepass后从节点同步失败,因从节点未配置masterauth导致认证失败;需在从节点配置文件中设置masterauth或运行时CONFIGSET,并配合ACL权限、bind限制与防火墙加固。334 收藏 -
异步刷新缓存的核心逻辑是命中逻辑过期数据时先返回旧值,再后台异步查库更新缓存,通过expireAt字段判断过期而非Redis物理TTL,并用分布式锁保障并发安全。333 收藏 -
必须同时启用io-threads和io-threads-do-reads,否则I/O线程不参与读请求处理;io-threads≥2才生效,需configrewrite或重启;推荐值为min(4,CPU核心数×0.7),NUMA架构下必须用server_cpulist绑定同node核心。326 收藏