Redis技术文章
-
redis.call()比redis.pcall()更易触发OOM,因其失败即终止,而pcall()返回的错误表常驻Lua栈且累积不释放,RedisLua引擎仅在脚本退出时批量GC。153 收藏 -
GEORADIUS返回空结果最常见原因是经纬度顺序写反,必须经度在前、纬度在后;而高德/百度等地图API默认是纬度在前、经度在后,导致坐标存入错误位置。152 收藏 -
RedisPub/Sub无法缓冲积压消息,因其纯内存广播机制不重试、不排队,消息直接丢弃;应改用List+BRPOP实现带缓冲队列,并由业务明确管理消息生命周期。152 收藏 -
redis-cli的monitor命令可实时打印所有指令但仅限调试环境,因性能开销大、无过滤能力、输出非结构化,生产环境应禁用;推荐用slowlog(设slowlog-log-slower-than为0)替代。149 收藏 -
要定位被淘汰的key,需监控evicted_keys增量、expired_keys飙升情况,并结合Redis7.0+的MEMORYUSAGE与OBJECTFREQ抽样分析;allkeys-lru不安全,应优先用volatile-lru/lfu;LFU更耗CPU因频次衰减更新;验证key是否频繁淘汰可用PFADD+PFCOUNT埋点统计。148 收藏 -
Redis默认单线程设计,仅用一个CPU核,多核需通过部署多个实例分摊压力;Redis7.0的--server-workers仅加速网络I/O,不提升命令执行并发。146 收藏 -
必须显式配置client-output-buffer-limit,否则普通客户端无输出缓冲区上限,易致内存耗尽;需为normal、pubsub等类型分别设置hard/soft限制,尤其pubsub缓冲区最易失控。146 收藏 -
redis-check-aof不能修复截断的AOF文件,仅校验并截断末尾不完整命令,使文件回退至最后一个完整写入点。144 收藏 -
是的。shutdown默认执行同步RDB保存,前提是redis.conf中存在未注释的有效save规则(如save6010000),且磁盘空间充足、无阻塞命令;它会先落盘再断连最后退出。139 收藏 -
本文用商品详情缓存同时过期的场景,演示 Redis 缓存雪崩的形成过程,并给出 TTL 抖动、热点预热、互斥重建和降级保护的落地方案。139 收藏 -
Redis主从同步中大Key会导致复制中断或延迟飙升,因其单次序列化传输阻塞复制流、触发超时断连及缓冲区溢出;需用渐进式扫描分批拆分并双写保障一致性。137 收藏 -
不能。PSUBSCRIBE仅支持glob模式(、?、[abc]),不解析冒号分隔的层级语义,news::等多星写法无效;实际可行的是单通配符前缀匹配(如news:),依赖命名规范而非Redis自动路由。137 收藏 -
空值缓存TTL应设为60s~180s并配合业务SLA,禁用null直存而用"__NULL__"等明确标记,且必须与接口层参数校验、限流及定期清理协同使用。136 收藏 -
XDEL对已消费消息无效,因其仅逻辑删除未被任何消费者组读取的消息;已入PEL的消息调用XDEL会静默返回0,必须用XACK释放再XTRIM裁剪。135 收藏 -
appendfsynceverysec仍可能阻塞主线程,是因为当后台fsync未完成而缓冲区有新数据时,主线程会同步等待;根本原因是磁盘慢导致单次fsync超1秒,触发安全兜底机制。135 收藏