Redis 键管理:数量、扫描与过期时间
Redis 键与过期时间
键用于定位数据。可以使用 app:对象:编号:字段 这样的命名约定,例如 shop:user:42:name;冒号只是方便人阅读,不会自动创建目录或提供权限隔离。
查询键
| 命令 | 用途 |
|---|---|
TYPE key | 查看值类型;键不存在时返回 none |
EXISTS key | 检查键是否存在 |
TTL key / PTTL key | 查看剩余秒数 / 毫秒数 |
DEL key | 删除指定键 |
设置与保留过期时间
SET key value EX 60 在写入时设置 60 秒有效期,EXPIRE key 60 为已有键设置有效期。TTL 返回 -1 表示没有过期时间,-2 表示键不存在;返回非负整数表示剩余秒数。
普通 SET 覆盖值会清除原来的 TTL;SET ... KEEPTTL 可保留。INCR、HSET 等修改值内容的操作不会重置整个键的 TTL。PERSIST 移除整个键的过期时间。
下面是独立实验服务中的练习步骤,输出是预期结果,本次文档整理未运行这些命令:
text
SET learn:ttl value EX 60
TTL learn:ttl
SET learn:ttl replacement
TTL learn:ttl
EXPIRE learn:ttl 60
SET learn:ttl final KEEPTTL
TTL learn:ttl
DEL learn:ttl
TTL learn:ttl及时执行时,第一次 TTL 为 0 到 60 之间;普通覆盖后为 -1;保留 TTL 后继续倒计时;删除后为 -2。中途等待超过有效期,结果也会变化。
查找一组键
从 SCAN 0 MATCH learn:* COUNT 100 开始,使用返回的游标继续扫描,直到游标回到 0。COUNT 是工作量提示,不能把一次空结果当成扫描完成;并发变化时还需处理重复结果,扫描不提供快照。
不要把线上全量查键当成普通请求路径。大键空间上的 KEYS * 会阻塞命令处理,排查时优先分批扫描,并限制后续读取的数据量。
继续阅读:TTL、覆盖与缓存行为。参考:EXPIRE、SCAN。
Redis 键数量查询
redis 工具
查询多少key
下方地址、键名和数量来自原笔记历史会话,本轮未连接该实例;不要把固定数量当作当前环境的预期值。
INFO keyspace:查看各非空库的键统计- dbsize:当前库key 数量
- keys 线上不推荐
shell
# 本地虚构数据示例
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=10,expires=2,avg_ttl=60000
127.0.0.1:6379> del example:task
(integer) 1继续阅读
- 数据与原子性
- 数据与原子性
- 完整实践