Redis技术文章
-
用 Redis INFO commandstats 拆解单命令 CPU 异常,理解 calls、usec、usec_per_call、failed_calls 与采样窗口的关系,并给出可复核的排查流程。135 收藏 -
Redis Cluster 遇到 CROSSSLOT 时,先区分单键 pipeline 的跨节点分发和多键命令的跨槽约束。本文用 CLUSTER KEYSLOT、hash tag、同槽分组和 ClusterClient 示例说明如何拆分,并用批次、槽位、错误数和 P95 验证改造结果。135 收藏 -
Redis 出现 NOPERM 时,先用 ACL WHOAMI 确认连接身份,再用 ACL GETUSER、ACL DRYRUN 和 ACL LOG 区分命令、键模式与认证问题,最后按最小权限修复。134 收藏 -
修改 Redis maxmemory-policy 前,先用 INFO、SCAN 和 MEMORY USAGE 建立键空间、碎片和大键基线,判断新策略会淘汰哪些键,避免把持久数据误当成缓存。133 收藏 -
用 XINFO GROUPS、XINFO CONSUMERS 与 XPENDING 区分 Redis Streams 的未投递积压和未确认积压,并说明 lag、pending、idle、inactive 的版本语义与告警组合。132 收藏 -
Redis 8.8 的 INCREX 把计数、上限、过期和只在新窗口设置 TTL 组合成一个原子命令。本文用固定窗口限流示例说明如何从简单 Lua 方案迁移,如何读取实际增量,以及哪些多键和滑动窗口场景仍应保留 Lua。131 收藏 -
Redis Bitmap 的 offset 是从 0 开始的位偏移,不是字节下标。本文用字节映射、Go 边界检查和 BITFIELD 定宽字段示例,说明如何计算位图偏移并避免负数、整数溢出和 2^32 上限带来的越界问题。130 收藏 -
Redis CLIENT PAUSE 适合在升级或主从切换时暂时控制客户端请求。本文用 WRITE 与 ALL 两种模式拆解读写隔离、CLIENT UNPAUSE 恢复和维护窗口验收,避免把暂停命令当成无条件的全局锁。129 收藏 -
解释 Redis SET NX EX 在键不存在、已有 TTL 和条件更新场景下的真实行为,区分 NX 条件写入、EX 重置租期与 KEEPTTL 保留剩余 TTL,并给出锁初始化、更新和排查命令。128 收藏 -
Redis RESP3 不是把 RESP2 换个版本号,而是会改变部分命令的返回类型。本文用 Go 和 go-redis 拆开 HGETALL 的 map/array 差异,给出升级判断、解析边界和灰度验证办法。127 收藏 -
Redis Lua 脚本返回多个值时,先把结果设计成稳定的索引数组,再按客户端类型解析;本文说明 Lua 表、RESP 数组、Python list、Go 切片和空值之间的映射。125 收藏 -
Redis GEOSEARCH 可以从地理索引中按圆形或矩形范围筛选成员。本文从配送围栏误判场景出发,拆开 BYRADIUS、WITHDIST、ASC、COUNT 与 ANY 的组合边界,给出可核对的命令结构和排障判断。124 收藏 -
Redis 8.8 新增 INCREX,把计数、上限和过期时间放进一个原子命令。文章用 redis-cli 演示 60 秒窗口限流,解释 UBOUND、ENX、SATURATE 的差别,并给出旧版本回退方案与检查边界。123 收藏 -
Redis COPY 适合在同一实例内复制缓存或配置键,但 REPLACE、DB 和 Redis Cluster 的哈希槽限制很容易被忽略。本文用可验证命令讲清返回值、TTL、复杂度和失败边界。123 收藏 -
Redis 设置了 EXPIRE 后,键并不一定在到点瞬间从内存消失。本文从 TTL 读数、访问触发的惰性删除和后台主动过期检查入手,说明为什么会看到过期键,以及怎样用命令判断问题究竟在观察方式、访问路径还是过期清理压力。122 收藏