Redis技术文章
-
Redis XREADGROUP 使用 BLOCK 参数控制没有新消息时的等待时长:BLOCK 2000 表示最多等待 2 秒,BLOCK 0 表示无限等待;读取待处理消息时使用非 > 的 ID,BLOCK 不会生效。469 收藏 -
用 Redis GEOSEARCHSTORE 把附近门店筛选结果落到新集合,实测 BYRADIUS、COUNT、排序和旧结果清理的边界。464 收藏 -
Redis Sorted Set 按字典序查询时,关键是让成员使用相同 score,再用 ZRANGE BYLEX 配置包含或排除边界;本文给出范围写法、分页和空结果排查清单。461 收藏 -
Redis 7 之后可以把 Lua 逻辑注册为函数,再用 FCALL 按函数名调用。本文从一个原子更新场景出发,拆清 numkeys、KEYS、ARGV、FCALL_RO 和集群迁移的边界。460 收藏 -
Redis 报 OOM 不一定是 used_memory 超过 maxmemory。本文从 maxmemory 判定、内存碎片率、客户端输出缓冲和大 key 四个方向核对真实占用,并给出可复现的 redis-cli 检查命令。460 收藏 -
Redis 缓存键如果使用相同 TTL,批量写入后可能在同一时间段集中失效。本文用 Go 示例演示如何加入可控随机抖动,并区分首次回填、刷新和热点保护。460 收藏 -
EXPIRE 只能让整个 Redis Hash key 过期,不能单独淘汰某个 field。Redis 7.4.0 起可用 HEXPIRE、HPEXPIRE 设置字段级 TTL;旧版本则应按生命周期拆分 key。456 收藏 -
Redis Functions 升级最容易混淆的是 library name、function name 和 Lua 脚本 SHA1。本文用整库替换、脚本兼容窗口和升级检查表,说明如何保持业务调用名稳定。455 收藏 -
Redis UNLINK 只会先把 key 从键空间摘除,真正的对象释放在后台异步完成。本文用 lazyfree 队列、used_memory、RSS 和 MEMORY STATS 建立删除大键后的内存回收判断方法。454 收藏 -
Redis 分布式锁续期失败时,不能只看异常或单独读取 TTL。本文用唯一令牌、原子脚本和 PTTL 区分锁仍由本客户端持有、已被接管与状态未知,并说明安全释放和业务栅栏边界。451 收藏 -
Redis SETNX 只能完成抢锁,不能单独保证安全释放。本文用订单超时任务拆解误删他人锁的竞态,给出带随机令牌的加锁、续期边界与 Lua 原子释放脚本,并用可复查的命令验收。450 收藏 -
Redis 7.4 的 HEXPIRE 可以只给 Hash 中指定字段设置过期时间,适合拆分会话或临时属性的生命周期。本文用 HSET、HEXPIRE、HPTTL 和 HGETALL 核对 FIELDS 参数、返回值、版本边界与常见误区。450 收藏 -
Redis Lua 返回数组出现 nil,关键在 Lua table、RESP2/RESP3 与客户端解码的多层映射。本文用最小脚本说明 nil 截断、空回复差异和稳定返回契约的修复方法。448 收藏 -
用 Redis bitmap 按用户和月份记录每日签到,演示 SETBIT、GETBIT、BITCOUNT 的组合,并说明日期偏移、BIT 范围、过期和补签边界。446 收藏 -
用 Redis BITFIELD 把多个小整数放进一个字符串,掌握 # 偏移、GET/INCRBY 顺序以及 WRAP、SAT、FAIL 三种溢出策略,避免紧凑计数器读错或越界。444 收藏