在 Redis 中,设置键的过期时间可以通过多种命令实现。以下是几个常用命令及其详细说明,并结合示例代码展示如何设置和管理键的过期时间。
1. EXPIRE - 为给定键设置过期时间(以秒为单位)
EXPIRE
命令用于为给定键设置过期时间,时间以秒为单位。
bash
EXPIRE key seconds
示例:
bash
SET mykey "Hello"
EXPIRE mykey 10 # 设置 mykey 在 10 秒后过期
2. PEXPIRE - 为给定键设置过期时间(以毫秒为单位)
PEXPIRE
命令用于为给定键设置过期时间,时间以毫秒为单位。
bash
PEXPIRE key milliseconds
示例:
bash
SET mykey "Hello"
PEXPIRE mykey 5000 # 设置 mykey 在 5000 毫秒(5 秒)后过期
3. EXPIREAT - 为给定键设置过期时间(指定具体的时间戳)
EXPIREAT
命令用于为给定键设置过期时间,时间戳以秒为单位。
bash
EXPIREAT key timestamp
示例:
bash
SET mykey "Hello"
EXPIREAT mykey 1672531199 # 设置 mykey 在指定的时间戳过期
4. PEXPIREAT - 为给定键设置过期时间(指定具体的时间戳,以毫秒为单位)
PEXPIREAT
命令用于为给定键设置过期时间,时间戳以毫秒为单位。
bash
PEXPIREAT key timestamp
示例:
bash
SET mykey "Hello"
PEXPIREAT mykey 1672531199000 # 设置 mykey 在指定的时间戳过期
5. TTL - 获取键的剩余生存时间(以秒为单位)
TTL
命令用于获取键的剩余生存时间,时间以秒为单位。
bash
TTL key
示例:
bash
SET mykey "Hello"
EXPIRE mykey 10
TTL mykey # 返回 mykey 的剩余生存时间
6. PTTL - 获取键的剩余生存时间(以毫秒为单位)
PTTL
命令用于获取键的剩余生存时间,时间以毫秒为单位。
bash
PTTL key
示例:
bash
SET mykey "Hello"
PEXPIRE mykey 5000
PTTL mykey # 返回 mykey 的剩余生存时间
7. PERSIST - 移除键的过期时间
PERSIST
命令用于移除键的过期时间,使键永久存在。
bash
PERSIST key
示例:
bash
SET mykey "Hello"
EXPIRE mykey 10
PERSIST mykey # 移除 mykey 的过期时间
TTL mykey # 返回 -1,表示 mykey 不会过期
综合示例
下面是一个结合多个命令的完整示例,展示如何设置、检查和移除键的过期时间:
bash
# 启动 Redis CLI
redis-cli
# 设置键并指定过期时间
SET mykey "Hello"
EXPIRE mykey 10 # 设置 mykey 在 10 秒后过期
# 获取剩余失效时间
TTL mykey # 应返回一个正整数,表示剩余秒数
# 等待几秒后再检查
SLEEP 5 # 等待 5 秒
TTL mykey # 应返回一个小于 10 的正整数,表示剩余秒数
# 移除键的过期时间
PERSIST mykey
TTL mykey # 应返回 -1,表示 mykey 不会过期
# 重新设置键并指定过期时间(以毫秒为单位)
PEXPIRE mykey 5000 # 设置 mykey 在 5000 毫秒(5 秒)后过期
PTTL mykey # 应返回一个接近 5000 的正整数,表示剩余毫秒数
# 等待几秒后再检查
SLEEP 3 # 等待 3 秒
PTTL mykey # 应返回一个接近 2000 的正整数,表示剩余毫秒数
# 设置键并指定具体的过期时间戳
SET mykey "Hello"
EXPIREAT mykey 1672531199 # 设置 mykey 在指定的时间戳过期
TTL mykey # 返回 mykey 的剩余生存时间,具体数值根据当前时间而定
# 重新设置键并指定过期时间戳(以毫秒为单位)
SET mykey "Hello"
PEXPIREAT mykey 1672531199000 # 设置 mykey 在指定的毫秒时间戳过期
PTTL mykey # 返回 mykey 的剩余生存时间,具体数值根据当前时间而定
注意事项
- 时间精度 :
EXPIRE
和EXPIREAT
使用秒为单位,而PEXPIRE
和PEXPIREAT
使用毫秒为单位。 - TTL 和 PTTL 返回值 :
- 正整数:表示剩余的生存时间。
- -1:表示键没有设置过期时间。
- -2:表示键不存在。
- 持久化 :通过
PERSIST
命令可以移除键的过期时间,使其永久存在。
总结
通过 Redis 提供的各种命令,可以灵活地管理键的过期时间。无论是设置相对时间还是绝对时间,Redis 都提供了相应的命令来满足需求。这些命令的结合使用,可以帮助你精细地控制键的生存时间,保证数据的有效性和一致性。