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

相关推荐
小杨同学493 分钟前
C 语言实战:动态规划求解最长公共子串(连续),附完整实现与优化
后端
Cache技术分享5 分钟前
290. Java Stream API - 从文本文件的行创建 Stream
前端·后端
用户948357016516 分钟前
拒绝 try-catch:如何设计全局通用的异常拦截体系?
后端
golang学习记9 分钟前
Go 1.22 隐藏彩蛋:cmp.Or —— 让“默认值”写起来像呼吸一样自然!
后端
阿里巴巴P8高级架构师9 分钟前
从0到1:用 Spring Boot 4 + Java 21 打造一个智能AI面试官平台
java·后端
桦说编程12 分钟前
并发编程踩坑实录:这些原则,帮你少走80%的弯路
java·后端·性能优化
小杨同学4914 分钟前
C 语言实战:枚举类型实现数字转星期(输入 1~7 对应星期几)
前端·后端
用户83071968408214 分钟前
Shiro登录验证与鉴权核心流程详解
spring boot·后端
码头整点薯条15 分钟前
基于Java实现的简易规则引擎(日常开发难点记录)
java·后端
Codelinghu22 分钟前
「 LLM实战 - 企业 」构建企业级RAG系统:基于Milvus向量数据库的高效检索实践
人工智能·后端·llm