通用键管理与过期机制
掌握键的通用操作命令
理解过期时间的原理与操作
掌握三种过期删除策略
核心讲解
(1)通用键命令
适用于所有类型的 key。
表格
命令 | 功能 |
|---|---|
| 删除键 |
| 是否存在 |
| 查看 key 的类型 |
| 重命名 |
| 移动到其他库 |
| 设置过期时间(秒) |
| 设置到指定时间点过期 |
| 查看剩余过期时间,-1 永久,-2 不存在 |
| 移除过期时间,变永久 |
| 增量迭代遍历键,生产用 |
(2)过期时间
Redis 可以给每个 key 设置过期时间,到点自动删除,是缓存的核心特性。
秒级精度:EXPIRE
毫秒级精度:PEXPIRE
设置同时设置过期:SET EX 命令
(3)过期删除策略
惰性删除:访问 key 的时候才检查是否过期,过期就删除。省 CPU,但是过期没访问的会一直占内存。
定期删除:每隔一段时间随机抽取一批 key 检查,删除过期的。平衡 CPU 和内存。
内存淘汰:内存满了,按淘汰策略删 key。
Redis 两种策略配合使用:惰性 + 定期,保证最终都会删除。
操作示例
# ===== 键通用操作 =====
SET name zhangsan
# 查看类型
TYPE name
# string
# 重命名
RENAME name username
# 判断存在
EXISTS username
# ===== 过期时间 =====
# 设置300秒过期
EXPIRE username 300
# 查看剩余时间
TTL username
# 还有多少秒,-1是永久,-2不存在
# 设置指定时间点过期
EXPIREAT username 1735689600
# 取消过期,变永久
PERSIST username
TTL username
# -1
# ===== SCAN 遍历 =====
# 增量遍历,不阻塞
SCAN 0 MATCH user:* COUNT 10
# 返回下一个游标和匹配的key,游标0开始,下次用返回的游标继续
# ===== 批量删除匹配键 =====
# 生产环境不要用keys * | del,用scan批量删
常见误区
过期时间是最后设置的算:多次设置过期时间,以最后一次为准,不是累加
TTL=-1 就是出错:-1 是永久有效,-2 才是不存在
生产用 KEYS 批量删:生产绝对禁止 KEYS,要用 SCAN 迭代删除
过期了立刻就删:不是立刻删,惰性删除 + 定期删除,有延迟,但一般秒级
课后练习
设置一个 key,60 秒过期,查看剩余时间
取消过期,验证变成永久
用 SCAN 遍历当前库所有以 user: 开头的键
简述三种过期删除策略的优缺点

