-
Lettuce管道中flushCommands()仅发送命令不返回结果,正确做法是先保留各操作返回的RedisFuture,再调用get()或thenApply()获取响应。245 收藏 -
哨兵通过“客观下线”(ODOWN)判断主节点真挂了:单个哨兵连不上仅为主观下线(SDOWN),需至少quorum个哨兵达成一致才触发ODOWN;哨兵间用SENTINELis-master-down-by-addr命令确认,非心跳广播,网络分区可能导致结论不一。244 收藏 -
DEL命令清空List最快,时间复杂度O(1),原子且单次往返;LTRIM仅在小List中可用,O(N)且保留key;禁用LPOP循环,避免阻塞与残留;清空前需TYPE校验类型。244 收藏 -
LATENCYDOCTOR无法诊断atop导致的毛刺,因其只监控Redis内部延迟(如事件循环、命令执行、AOF写入),而atop-R读取/proc/pid/smaps触发的内核页表锁争用发生在内核态,Redis用户态线程无法感知。243 收藏 -
命中率低于75%(即keyspace_hits:keyspace_misses<3:1)时应调整淘汰策略,因缓存已无法有效分担数据库压力;需结合evicted_keys增速与keyspace_misses增速同步上升来确认问题根源。242 收藏 -
可行但仅适用于轻量场景;必须用EVAL执行Lua脚本原子完成“取+删”或“取+标记”,避免LPOP+DEL竞态导致重复消费或消息丢失。241 收藏 -
Redis客户端重连易打挂新主库,因默认“失败即重试”导致连接风暴;需配置指数退避+随机抖动(如Lettuce用ExponentialBackoffRetry.withJitter)、Go端自定义DialContext重试逻辑,并控制初始延迟50–100ms、最大延迟≤3s、重试8–12次。239 收藏 -
Redis发布订阅卡顿主因是客户端消费能力不足或连接资源耗尽,而非Redis服务端性能瓶颈;需隔离连接池、改用异步驱动+批处理+超时熔断,并在需可靠性时迁移到Stream。239 收藏 -
RedisPub/Sub不适用于金融交易场景,因其纯内存、无持久化、无确认机制,导致消息必然丢失;集群下无全局顺序且不支持事务,应改用Streams或Kafka。237 收藏 -
Redis内存未立即下降是因为采用惰性+定期双机制清理过期key,定期清理受hz参数控制;hz越大扫描越频繁但CPU开销越高,默认10,调至100可加速清理,超100收益递减且可能引发高CPU。234 收藏 -
会,Redis主从同步常打爆网卡,尤其跨机房、大key迁移或全量复制时;因Redis无带宽限速参数,需用tc对主节点6379端口出向流量限速,并调大repl-timeout防超时断连。233 收藏 -
String类型在LRU驱逐场景下内存效率低,因其每个key和value均独立占用redisObject+SDS结构,导致对象头冗余高、驱逐粒度粗;而Hash等结构共享key对象头、支持ziplist压缩,内存利用率高40%~60%。233 收藏 -
RedisAOF是将写命令追加到文件以实现持久化,但并非所有场景都适用:appendfsync配置影响安全性与性能,everysec是线上折中选择,always性能差,no不可靠;AOF重写可能耗资源,切换时需检查文件完整性、路径及时间戳。232 收藏 -
OBJECTFREQ返回key的LFU近似频次(0–255),多次GET后应上升;频次非线性增长、有衰减、依赖serverCron更新,需确认Redis≥4.0、maxmemory-policy正确配置且内存压力存在。232 收藏 -
单靠Redis命令无法保证双写缓存原子性,因SET和DEL是两个独立命令,中间可能被其他客户端插入操作,导致缓存与DB不一致;Lua脚本在服务端单线程原子执行,可规避竞态。232 收藏