-
单纯用EXPIRE挡不住缓存击穿,因Redis物理过期会删除key导致并发请求全打到DB;逻辑过期通过value内嵌expireTime时间戳由应用判断数据有效性,配合长TTL防key被清,再用SETNX避免重复更新。
-
布隆过滤器不支持单元素删除,BF.EXISTS返回true时数据可能已不存在,导致缓存穿透;应改用支持CF.DEL的CuckooFilter或定期重建带时间戳的过滤器。
-
RedisCluster非开箱即用高可用方案,需主动设计拓扑、预估槽位、处理跨槽限制;常见连不上因客户端未启集群模式、总线端口未开放、配置用localhost、多key未同槽、全局命令不支持、脚本事务受槽约束、slot缓存更新滞后等。
-
切换RedisPython客户端需同步更新依赖和初始化代码,仅安装新包不生效;redis-py不支持集群,redis-py-cluster已停更,应改用redis-py4.0+的RedisCluster;异步场景下aioredisv1与v2接口不兼容。
-
Redis哨兵模式不支持自动伸缩,其核心能力仅限于监控存活、触发故障转移和提供主节点地址;它不参与节点增删、数据分片或路由更新。
-
ZREVRANGE默认返回member(如商品ID),非score;需加WITHSCORES参数才同时返回member和score,结果为交替格式。
-
setIfAbsent不够安全,因其无法原子性设置过期时间,易导致锁永久不释放;Redis推荐用SETkeyvalueNXEXseconds一步完成,但SpringDataRedis老版本setIfAbsent不支持EX参数。
-
Redis集群内网带宽消耗主因是Gossip协议心跳、拓扑同步和故障探测,走16379集群总线端口,不体现于客户端网络指标;需通过INFOreplication的repl_offset差值和INFOstats的instantaneous_input/output_kbps间接估算,异常时用redis-cli--clustercheck和tcpdump抓包分析。
-
Redis自动快照由save指令控制,需满足“指定时间内发生指定次数写操作”才触发,如save9001表示900秒内至少1次修改;仅注释或修改redis.conf不生效,必须重启或重载配置,且CONFIGSET无法动态修改save参数。
-
主节点配置requirepass后从节点同步失败,因从节点未配置masterauth导致认证失败;需在从节点配置文件中设置masterauth或运行时CONFIGSET,并配合ACL权限、bind限制与防火墙加固。
-
Redis7.0前无原生布隆过滤器,需依赖redisbloom模块或手动实现;云Redis通常未启用该模块,须先用MODULELIST确认;手动实现依赖SETBIT/GETBIT与多哈希(推荐fnv1a_64/murmur3),K取3–5,BIT_SIZE需按预估总量与误判率反推,避免空间不足导致误判飙升。
-
全量复制触发时,Redis主节点必须生成RDB文件,因为从节点初次连接或断连太久后无法仅靠增量命令追上主节点,主节点需将当前完整数据集打包成RDB文件传给从节点以保证状态一致。
-
<p>缓存雪崩主因是大量Key集中过期,解决需打散过期时间并避免全量失效;分片本身不防雪崩,但结合一致性哈希与分片ID固定偏移(如offset=shard_id*60)可强制错峰过期,比随机更可控。</p>
-
min-slaves-to-write作用是当在线且延迟≤min-slaves-max-lag的从库数量不足时,主库主动拒绝写命令以保障数据安全;但因不校验从库是否真正落盘、主库缓冲区数据未发送、diskless复制期间内存积压等原因仍可能丢数据。
-
RedisPub/Sub超时主因是TCP连接中断或服务端阻塞,需独立配置订阅连接、启用tcp-keepalive、禁用中间设备断连,并监控blocked_clients与slowlog。