Redis技术文章
-
Redis6+的io-threads应设为2~8,不超过磁盘队列深度的2倍,且必须保持io-threads-do-readsno;它仅加速写入内核页缓存,不加速fsync,设得过多反而加剧IOWAIT和延迟。463 收藏 -
能,但仅限Redis服务器端EVAL/EVALSHA上下文;需用正确日志级别常量和预拼接字符串,且依赖redis.conf中loglevel和logfile配置生效。479 收藏 -
INFOkeyspace无法反映淘汰情况,因其仅统计存活key数量,不区分已过期未删除或已被淘汰的key,且不记录evicted_keys等关键淘汰指标。191 收藏 -
预热不充分指预热数据未覆盖真实热点、未执行完或未及时更新,导致上线后2–5分钟内缓存击穿;须用线上采样等动态数据源、分批超时控制、命中率校验及事件驱动机制。445 收藏 -
SpringBoot默认不开启Redis读写分离,纯主从模式下即使配置read-from也无效;必须使用哨兵/集群模式或自定义MasterReplica.connect(),并配合LettuceClientConfigurationBuilderCustomizer注入ReadFrom.REPLICA_PREFERRED才能生效。161 收藏 -
缓存击穿需用Redis原子命令SETkeyvalueEXsecondsNX加key级互斥锁,配合Lua脚本安全解锁;推荐RedissonRLock自动续期,空值缓存需权衡数据一致性与性能。353 收藏 -
需结合XINFOCONSUMERS与XINFOGROUPS判断Streams实时消费延迟:关注pel-count、pending数、idle值及last-delivered-id与流尾ID的字典序比较,避免误判离线或假死状态。155 收藏 -
+sdown表示单个哨兵认定主节点失联,+odown才是触发故障转移的共识临界点;两者时间差暴露网络或配置问题,+odown后还需经选举、选从库、提升等步骤才能完成切换。465 收藏 -
Redis默认单线程设计,仅用一个CPU核,多核需通过部署多个实例分摊压力;Redis7.0的--server-workers仅加速网络I/O,不提升命令执行并发。146 收藏 -
Redis延迟高但CPU正常通常是网络丢包或抖动所致,表现为redis-cli--latency毛刺飙升、ping标准差>10ms或丢包率>0.1%,需用tcpdump抓包分析重传与ACK丢弃,并排查云环境安全组、NAT会话老化及内核TCP参数配置。154 收藏 -
Redis延迟高但CPU正常通常是网络丢包或抖动所致,表现为redis-cli--latency毛刺飙升、ping标准差>10ms或丢包率>0.1%,需用tcpdump抓包分析重传与ACK丢弃,并排查云环境安全组、NAT会话老化及内核TCP参数配置。221 收藏 -
Redis通过硬编码魔数“REDIS”识别混合AOF中RDB段,匹配后切换至AOF解析模式;RDB损坏则直接报错不进入AOF阶段,且无法手动拼接或用redis-check-aof修复。399 收藏 -
Host模式下Redis集群初始化失败,因节点默认上报127.0.0.1导致冲突,必须显式配置bind和cluster-announce-ip为宿主机真实IP,并开放客户端端口及对应+10000总线端口。391 收藏 -
直接看INFOclients的qbuf、qbuf-free、obl、oll、omem字段可判断单个客户端流量压力:qbuf高说明命令积压,omem>2MB或qbuf>1MB且持续高位表明高频写入或返回大数据;CLIENTLIST才能定位具体异常客户端,需重点关注qbuf与omem同时偏高、idle小但qbuf大的连接。438 收藏 -
生产环境必须组合使用RDB和AOF:RDB作冷备快照,AOF负责实时写入;仅用AOF有崩溃导致启动失败、重放慢、数据丢失风险;仅用RDB则丢失窗口大、fork开销高、无法增量修复。379 收藏