-
双重检查是为防缓存击穿:第一次检查过滤命中请求,第二次检查在锁内确认避免重复查库;必须配合空值缓存防穿透、Lua脚本删锁保原子性。
-
RedisRDB快照生成失败时bgsave返回ERR,主因是fork()系统调用失败,典型表现为日志中出现“Failedtofork()forRDB:Cannotallocatememory”或“Resourcetemporarilyunavailable”,根本原因在于Linux的vm.overcommit_memory设置不当(默认0易拒绝fork)、内存压力过大、ulimit-u或pid_max耗尽,或cgroup内存限制过严;应将vm.overcommit_memory设为1并检查cgroup限制
-
不会阻塞。RDB持久化由fork()子进程执行,主线程继续处理请求;依赖Linux内核写时复制(COW)机制,fork后父子进程共享物理内存页,仅在修改时才复制对应页,保证子进程读取fork时刻快照,但高写入会加剧COW开销。
-
RedisExporter连不上主因是认证或网络策略:启用密码需显式传参--redis.password;Docker部署注意网络模式;ACL需授予INFO/CONFIG/CLIENTLIST权限;Prometheustargets应指向exporter的9121端口而非Redis的6379。
-
FUNCTIONLOAD将函数库作为数据库对象持久化并复制,SCRIPTLOAD仅内存缓存脚本且不落盘、不复制;前者支持高可用与跨节点复用,后者重启或主从切换后即失效。
-
从 Redis 缓存治理趋势出发,分析单一 TTL 的不足,给出软过期、写侧失效通知、新鲜度指标和渐进落地路径,帮助团队在高峰流量下减少脏读窗口。
-
云盘IOPS不足会导致bgsave失败或超时,因RDB全量写入触发IO拥塞,表现为“Nospaceleftondevice”错误(实际空间充足);需升级ESSDPL1及以上云盘、确认dir指向高IOPS数据盘、启用混合持久化并禁用save命令。
-
BloomFilter不能单独用于消息去重,因其存在误判率;必须配合Redis的SET或ZSET做最终校验:SET适用于简单幂等场景,ZSET支持滑动窗口限频,典型流程为BloomFilter预筛→Redis精确判定→三重写入。
-
Redis集群启动失败、节点无法握手、CLUSTERNODES显示fail或connecting,大概率是Bus端口(clientport+10000)被占用;需确保各节点clientport与其对应bus端口区间互不重叠,如7000→17000,则下一节点clientport至少为17001。
-
彻底禁用RDB自动触发需注释或设为save"",重启或CONFIGREWRITE后CONFIGGETsave返回["save",""],且rdb_changes_since_last_save持续增长即生效。
-
Redis默认tcp-keepalive关闭(值为0),需主从双方redis.conf显式配置tcp-keepalive300并重启生效,且须与repl-timeout≥300协同调整,否则连接假活导致复制卡死。
-
根本原因是客户端频繁新建并立即关闭TCP连接,导致Linux内核在主动关闭方维持TIME_WAIT状态(2×MSL,通常60秒),端口无法复用;Redis服务端不产生该状态,问题源于客户端未复用连接池、错误调用close()、配置不当或框架内重复初始化。
-
serverCron每100ms检查一次,仅当无RDB/AOF子进程时,才根据saveparams(dirty+lastsave)触发RDB,或根据AOF状态、大小及增长率触发AOF重写;改配置不重置计时/计数,故不立即生效。
-
Redis集群中requirepass无效,因其仅作用于客户端端口(如6379),不约束集群总线端口(如16379);节点间通信明文进行,需依赖网络隔离、ACL及正确配置cluster-announce-ip等措施保障安全。
-
空值缓存过期时间设太长会导致Redis内存耗尽。因空值key不被访问,LRU无法淘汰,且每个约占100–200字节,数量多时迅速撑满内存;安全TTL应为1–5秒,需匹配业务数据可见延迟,并配合布隆过滤器、前缀命名、LFU策略及监控告警综合防控。