(书)如何管理redis数据库-11.如何使Redis中的密钥过期
介绍
Redis是一个开源的内存中键值数据存储。默认情况下,Redis密钥是_永久性_的,这意味着Redis服务器将继续存储它们,除非手动将其删除。但是,在某些情况下,您已经设置了密钥,但是您知道要在经过一定时间后才将其删除。换句话说,您希望密钥是_可变的_。本教程介绍了如何设置密钥过期,如何检查直到密钥过期的剩余时间以及取消密钥的过期设置。
如何使用本指南
本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。
本指南中显示的命令已在运行Redis版本的Ubuntu 18.04服务器上进行了测试 4.0.9。要设置类似的环境,您可以按照我们的指南如何在Ubuntu 18.04上安装和保护Redis的步骤1进行操作。我们将通过使用Redis命令行界面运行它们来演示这些命令的行为。请注意,如果您使用其他Redis界面(例如Redli),则某些命令的确切输出可能会有所不同。 redis-cli
另外,您可以提供一个托管的Redis数据库实例来测试这些命令,但是请注意,根据数据库提供者所允许的控制级别,本指南中的某些命令可能无法按所述方式工作。要配置DigitalOcean托管数据库,请遵循我们的托管数据库产品文档。然后,您必须 安装Redli 或 设置TLS隧道才能通过TLS连接到托管数据库。
设置密钥过期
您可以使用expire
命令设置现有密钥的到期时间,该命令将密钥的名称和到期前的秒数作为参数。为了证明这一点,请运行以下两个命令。第一创建名为字符串键key_melon
具有值"cantaloupe"
,而第二组它到450秒之后超时:
* set key_melon "cantaloupe"
* expire key_melon 450
如果成功设置了超时,则expire
命令将返回(integer) 1
。如果设置超时失败,它将返回(integer) 0
。
或者,您可以使用该expireat
命令将密钥设置为在特定的时间点到期。它使用Unix时间戳作为参数,而不是到期前的秒数。Unix时间戳是自1970年1月1日_Unix纪元_或00:00:00 UTC以来的秒数。可以使用许多在线工具来查找特定日期和时间的Unix时间戳,例如EpochConverter或UnixTimestamp.com。
例如,要设置key_melon
为在2025年5月1日格林尼治标准时间晚上8:30到期(由Unix timestamp表示1746131400
),可以使用以下命令:
* expireat key_melon 1746131400
请注意,如果传递给您的时间戳expireat
已经发生,它将立即删除密钥。
检查密钥过期的时间
你设置一键到期任何时候,你可以检查剩余到期为止(以秒为单位)的时候ttl
,它的全称是“牛逼IME牛逼Ø升香港专业教育学院”:
* ttl key_melon
Output
(integer) 433
有关更详细的信息,可以运行pttl
,它将返回直到密钥过期的时间(以毫秒为单位):
* pttl key_melon
Output
(integer) 431506
如果密钥尚未设置为过期且密钥不存在,则两者ttl
和pttl
都将返回。(integer) -1``(integer) -2
持久键
如果密钥已设置为过期,则任何覆盖密钥内容的命令(例如set
或getset
)都会清除密钥的超时值。要手动清除键的超时,请使用以下persist
命令:
* persist key_melon
如果成功完成,该persist
命令将返回(integer) 1
,表明密钥将不再过期。
结论
本指南详细介绍了用于在Redis中操作和检查键持久性的许多命令。如果您想在本指南中概述其他相关的命令,参数或过程,请在下面的注释中提出疑问或提出建议。