Redis技术文章
-
Redis Functions 会把 Lua 逻辑作为函数库保存。本文用一个订单状态校验函数说明 FUNCTION LOAD、REPLACE、FUNCTION LIST 和 FUNCTION DELETE 的切换边界,给出发布前验收与失败回滚顺序。379 收藏 -
Redis Lua 返回 RESP3 map 时,客户端是否拿到字典取决于脚本内部的 redis.setresp(3) 与连接侧的 HELLO 3 是否分别配置正确。本文拆开两层协议,说明 RESP2 为何会把 map 展平成交替键值数组,并给出客户端解析检查表。379 收藏 -
Redis 连接池耗尽不等于 Redis 慢。本文用 go-redis PoolStats、SLOWLOG GET 和 CLIENT LIST 区分慢命令、池等待与请求生命周期未结束,并给出修复顺序。378 收藏 -
Redis 的 EXEC 返回 nil/null,通常表示 WATCH 监视的键在提交前被触碰,不能据此判断具体哪个客户端打断了事务。本文区分监视冲突、队列错误和事务内命令错误,并给出带上限的重试写法。377 收藏 -
Redis 7.0 起可以用 CLIENT NO-EVICT 保护控制连接,但它只影响客户端淘汰,不会替代 maxmemory 或键淘汰策略。本文用一条监控连接说明 ON/OFF、配置前提和验收边界。376 收藏 -
Redis SCAN 不会把整个键空间一次性锁住,但完整遍历仍是 O(N) 工作。COUNT 只是单次工作量提示,配合游标、MATCH、TYPE 和渐进式巡检才能控制线上影响。375 收藏 -
用 Redis ZADD 的 NX、GT 与 CH 选项设计可重复执行的排行榜更新流程,处理同分、回退、重复消息和降级查询等常见边界。374 收藏 -
Redis Cluster 的多 key 命令要求相关 key 位于同一个 hash slot。本文解释 hash tag 的花括号规则,用 CLUSTER KEYSLOT 检查键名,并说明 CROSSSLOT、MOVED、TRYAGAIN 与热点风险的区别。372 收藏 -
Redis Lua 脚本在单线程执行模型下可能让后续请求排队。本文从接口延迟突然升高的现象出发,用 SLOWLOG、LATENCY 和脚本耗时证据定位阻塞来源,说明超时边界、停止动作与恢复后的反向验证。370 收藏 -
Redis 出现偶发慢响应时,LATENCY DOCTOR 能把采样到的延迟事件整理成可读报告。本文从阈值设置、事件记录、报告解读和复核动作入手,区分服务端阻塞、慢命令与网络往返。369 收藏 -
Redis ZPOPMIN 会在返回最低分成员的同时把它从有序集合删除,消费者崩溃时可能造成任务丢失。本文用处理中集合、幂等键和超时回收补上这个窗口。369 收藏 -
Redis Cluster 扩缩容时,业务抖动通常不是迁移命令本身造成的,而是迁移窗口、客户端重定向、热点槽位和失败收尾没有被单独核对。本文用一套可回滚的检查顺序说明如何安排迁移、观察状态并复查失败槽位。367 收藏 -
Redis Pub/Sub 采用至多一次投递,订阅端断线期间消息不会保留。本文用最小命令和排查表说明何时继续用 Pub/Sub,何时切换 Streams 或采用混合方案。363 收藏 -
Redis LATENCY DOCTOR 只分析实例内部延迟事件,业务接口耗时还包含网络、连接池、序列化和下游调用。本文用 LATEST、HISTORY、慢日志与应用指标对齐排查,并说明 LATENCY RESET 的证据风险。363 收藏 -
Redis Pub/Sub 断线后不能补回已经错过的消息。本文解释至多一次投递的原因,并用 Redis Streams 消费组设计可补读的可靠事件方案。362 收藏