Redis(17)如何在Redis中设置键的过期时间?

在 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 的剩余生存时间,具体数值根据当前时间而定

注意事项

  1. 时间精度EXPIREEXPIREAT 使用秒为单位,而 PEXPIREPEXPIREAT 使用毫秒为单位。
  2. TTL 和 PTTL 返回值
    • 正整数:表示剩余的生存时间。
    • -1:表示键没有设置过期时间。
    • -2:表示键不存在。
  3. 持久化 :通过 PERSIST 命令可以移除键的过期时间,使其永久存在。

总结

通过 Redis 提供的各种命令,可以灵活地管理键的过期时间。无论是设置相对时间还是绝对时间,Redis 都提供了相应的命令来满足需求。这些命令的结合使用,可以帮助你精细地控制键的生存时间,保证数据的有效性和一致性。

相关推荐
易安说AI43 分钟前
Claude Opus 4.6 凌晨发布,我体验了一整晚,说说真实感受。
后端
易安说AI1 小时前
Ralph Loop 让Claude无止尽干活的牛马...
前端·后端
易安说AI1 小时前
用 Claude Code 远程分析生产日志,追踪 Claude Max 账户被封原因
后端
颜酱2 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
Coder_Boy_4 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
掘金者阿豪5 小时前
关系数据库迁移的“暗礁”:金仓数据库如何规避数据完整性与一致性风险
后端
ServBay6 小时前
一个下午,一台电脑,终结你 90% 的 Symfony 重复劳动
后端·php·symfony
sino爱学习6 小时前
高性能线程池实践:Dubbo EagerThreadPool 设计与应用
java·后端
颜酱6 小时前
从二叉树到衍生结构:5种高频树结构原理+解析
javascript·后端·算法
掘金者阿豪6 小时前
UUID的隐形成本:一个让数据库“慢下来”的陷阱
后端