-
AOF重写加剧SSD寿命损耗,因其每次均全量生成新文件并原子替换,引发高频页擦除与搬移(写放大);频繁触发(如每小时2–3次)使SSD磨损加速,实测寿命比纯RDB缩短30%+。
-
ConnectionTimeoutException通常是Lettuce客户端连接池新建连接超时所致,主因是网络、DNS、地址配置或防火墙问题,而非Redis故障;其默认connectTimeout为30秒,生产建议设为3~5秒。
-
先看INFOCPU中used_cpu_sys是否单独飙升,若是则为连接层压力;若user和sys同步涨,再查cluster中migrating_slots/importing_slots是否非零,并结合客户端重试日志与抓包定位根因。
-
RedisGEOHASH命令返回标准Base32编码的Geohash字符串数组,长度1-12位,即使单个成员也返回如["wx4g0b0j0r0"]的数组,需取首项;仅对GEOADD添加的成员有效,未添加则返回[nil]。
-
不能。AOF是无时间戳的追加日志,不支持按时间点截断;需人工结合外部线索定位字节偏移或命令位置,再手动裁剪,并通过临时实例校验状态。
-
Redis集群内网带宽消耗主因是Gossip协议心跳、拓扑同步和故障探测,走16379集群总线端口,不体现于客户端网络指标;需通过INFOreplication的repl_offset差值和INFOstats的instantaneous_input/output_kbps间接估算,异常时用redis-cli--clustercheck和tcpdump抓包分析。
-
应优先使用pipeline批量发命令替代单条轮询,避免高RTT开销;对计数类操作用INCR/DECR原子增减;设值带过期统一用SET的EX/PX/NX参数;高频读不变Key应加客户端本地缓存。
-
“永不过期”策略实质是Rediskey物理永存,逻辑过期时间嵌入value中;安全的get_with_logic_expire需用SETNX抢锁、双重检查、异步更新;必须搭配主动刷新机制防脏数据。
-
noeviction策略下写操作直接报错是因为内存达maxmemory后硬性拒绝所有写命令,不释放key也不等待,仅允许读操作,导致“能读不能写”现象。
-
ZREM不能直接删除Geo数据,因为它只删除ZSET中的member名称,而非按经纬度范围删除;必须先用GEORADIUS等命令查询出目标member,再调用ZREM精确删除。
-
Redis主从切换后连接池未刷新导致请求超时或Connectionrefused,因Jedis/Lettuce默认不自动感知拓扑变更;需手动重建连接池或使用Lettuce6.0+内置重连机制。
-
推荐用base64url编码6字节随机数生成短码,冲突概率低且不可预测;需先EXISTS校验再写入,跳转用Lua脚本原子读URL并INCR计数,Redis用String类型存short:{code}→URL,设EX过期,stat:{code}单独存访问量。
-
首要排查项是repl-timeout,默认60秒,主从间REPLCONFACK延迟超时即断连;需主从同时调大该值,如设为120秒,并排查TCP保活、输出缓冲区、系统连接限制及ACK抖动等隐性瓶颈。
-
典型现象是Redis从节点反复断连,日志出现“Clientclosedconnectionduetooutputbufferlimit”,INFOreplication中状态在connect→sync→disconnected循环;主节点因输出缓冲区超限(默认slave256MB/64MB/60s)主动断开连接。
-
应先用EXISTS检查key存在,再用TYPE校验类型是否为string,因GET对非string类型会直接报错且无法捕获;TYPE返回值严格区分大小写和拼写,须用==全等比较。