过期时间
过期时间的命令是 EXPIRE。
设置过期时间
Redis 设置过期时间主要有三种方式
先设 Key,再设过期时间
bash
SET code 123456
EXPIRE code 300先设置 code = 123456,再为 code 设置过期时间 300 秒。300秒后自动删除。
其他类型同理
bash
# Hash
HSET user:1 name 张三
HSET user:1 age 20
EXPIRE user:1 300
# List
LPUSH queue A
LPUSH queue B
LPUSH queue C
EXPIRE queue 60
# Set
SADD onlineUsers 1001
SADD onlineUsers 1002
EXPIRE onlineUsers 1800查看剩余时间
bash
TTL code例如返回:
bash
(integer) 280表示还有 280 秒过期。
创建时直接设置过期时间(最常用)
bash
SET code 123456 EX 300含义:
- EX: 秒
- 300:300秒
验证码、Token、登陆状态 通常都可以这么写。
例如:
SET sms:1380000000 654321 EX 3005分钟后验证码自动失效。
按毫秒设置
bash
SET token abc PX 60000含义:
- PX:毫秒
- 60000:60000毫秒,即 60s
取消过期时间
bash
PERSIST key例如
bash
SET code 123 EX 60
PERSIST code从时
bash
TTL code
# 返回:-1这说明已经变成永久的了。
修改过期时间
bash
EXPIRE key secondsbash
EXPIRE code 600重新设置为 600 秒。
实际应用
验证码
bash
SET sms:13800138000 123456 EX 3005 分钟失效。
登录 Token
bash
SET token:abc user1001 EX 72002 小时失效。
防重复提交
bash
SET order:lock:1001 1 EX 10 NX10 秒后自动释放。
常见问题
1.Redis Key 到时间一定立即删除吗?
不一定
Redis采用两种机制
- 惰性删除:用户访问 Key 时发现已经过期,再删除
- 定期删除:Redis 后台线程周期性扫描过期 Key