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

总结

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

相关推荐
不一样的少年_3 小时前
别用前端思维写后端:一张 5MB 图片,为什么能撑爆内存?
前端·后端·图片资源
夜之眷属4 小时前
记一次战斗服务器 CPU 打满 100% 且“无法恢复“的排查
java·linux·运维·服务器·后端·性能优化
郝学胜-神的一滴4 小时前
C++ Templates 07:编译报错和调试手段与实战技巧
开发语言·c++·后端·软件工程·visual studio
谢亮_vipxieliang4 小时前
PHP 8 新特性:构造器属性提升与实战
开发语言·后端·php
imDwAaY4 小时前
Spring Boot的核心配置文件一览及其加载顺序
java·spring boot·后端
高频因子挖掘机4 小时前
量化选股到底要不要每天拉全市场股票?从全市场扫描到候选池的行情数据设计
后端·github·api
专业程序开发源5 小时前
springboot校园志愿者管理系统28562-计算机课程设计、毕业设计
java·spring boot·后端·python·django·php·课程设计
谢亮_vipxieliang5 小时前
Go select 多路复用:从语法到实战的完整指南
开发语言·后端·golang
高频因子挖掘机5 小时前
复权价格怎么算?从除权因子、时间方向到量化回测避坑
后端·github·api
mldong5 小时前
一条审批流的数据库账:5 张核心表、3 张扩展表、0 张表单表
后端·架构