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 都提供了相应的命令来满足需求。这些命令的结合使用,可以帮助你精细地控制键的生存时间,保证数据的有效性和一致性。

相关推荐
李梨同学丶29 分钟前
0201好虫子周刊
后端
思想在飞肢体在追38 分钟前
Springboot项目配置Nacos
java·spring boot·后端·nacos
Loo国昌3 小时前
【垂类模型数据工程】第四阶段:高性能 Embedding 实战:从双编码器架构到 InfoNCE 损失函数详解
人工智能·后端·深度学习·自然语言处理·架构·transformer·embedding
ONE_PUNCH_Ge4 小时前
Go 语言泛型
开发语言·后端·golang
良许Linux4 小时前
DSP的选型和应用
后端·stm32·单片机·程序员·嵌入式
不光头强4 小时前
spring boot项目欢迎页设置方式
java·spring boot·后端
怪兽毕设4 小时前
基于SpringBoot的选课调查系统
java·vue.js·spring boot·后端·node.js·选课调查系统
学IT的周星星5 小时前
Spring Boot Web 开发实战:第二天,从零搭个“会卖萌”的小项目
spring boot·后端·tomcat
郑州光合科技余经理5 小时前
可独立部署的Java同城O2O系统架构:技术落地
java·开发语言·前端·后端·小程序·系统架构·uni-app
Remember_9935 小时前
Spring 事务深度解析:实现方式、隔离级别与传播机制全攻略
java·开发语言·数据库·后端·spring·leetcode·oracle