引言

Redis 是一个开源的、内存中的键值数据存储。 默认情况下,Redis 密钥是持久的,这意味着 Redis 服务器将继续存储它们,除非手动删除它们。 然而,可能会出现这样的情况: 您已经设置了一个密钥,但是您知道在一定的时间之后您将希望删除它; 换句话说,您希望密钥是不稳定的。 本教程介绍如何设置密钥过期、检查密钥过期之前的剩余时间以及取消密钥过期设置。

如何使用本指南

本指南是作为包含自包含示例的备忘单编写的。 我们鼓励您跳转到任何与您正在尝试完成的任务相关的部分。

本指南中显示的命令是在运行 Redis 4.0.9版本的 Ubuntu 18.04服务器上测试的。 要建立一个类似的环境,你可以按照我们关于如何在 Ubuntu 18.04上安装和保护 Redis 的指南的第一步。 我们将通过使用 Redis-cli (Redis 命令行界面)运行这些命令来演示它们的行为。 请注意,如果您使用的是不同的 Redis 接口ーー例如 Redli ーー某些命令的确切输出可能会有所不同。

或者,您可以提供一个托管 Redis 数据库实例来测试这些命令,但是请注意,根据您的数据库提供程序所允许的控制级别,本指南中的某些命令可能不能像描述的那样工作。 要提供一个数字数据库管理数据库,请遵循我们的管理数据库产品文档。 然后,必须安装 Redli 或设置 TLS 通道,以便通过 TLS 连接到托管数据库。

设置键过期

可以使用 expire 命令为现有密钥设置过期时间,该命令以密钥的名称和过期前的秒数作为参数。 要演示这一点,请运行以下两个命令。 前者创建一个名为 key melon 的串键,值为“甜瓜” ,后者将其设置为450秒后到期:

  • set key_melon "cantaloupe"
  • expire key_melon 450

如果成功设置了超时时间,则 expire 命令将返回(integer)1。 如果设置超时失败,则返回(整数)0。

或者,您可以使用 expireat 命令将密钥设置为在特定时间点过期。 它以 Unix 时间戳作为参数,而不是过期前的秒数。 一个 Unix 时间戳是自 Unix 纪元以来的秒数,或者是1970年1月1日00:00:00 UTC。 在线有很多工具可以用来查找特定日期和时间的 Unix 时间戳,比如 EpochConverter 或者 unixtimestamp.com。

例如,要将 key melon 设置为在2025年5月1日 GMT 晚上8:30过期(由 Unix 时间戳1746131400表示) ,可以使用以下命令:

  • expireat key_melon 1746131400

注意,如果传递给 expireat 的时间戳已经发生,它将立即删除该键。

检查密钥过期时间

任何时候设置密钥过期,都可以使用 ttl 检查到期之前剩余的时间(以秒为单位) ,ttl 代表“ t ime t o l ive” :

  • ttl key_melon
Output
(integer) 433

要了解更详细的信息,可以运行 pttl,它会返回一个键过期的时间,单位是毫秒:

  • pttl key_melon
Output
(integer) 431506

Ttl 和 pttl 都会返回(整数)-1,如果没有将键设置为 expire; 如果键不存在,则返回(整数)-2。

持续的关键

如果一个键被设置为过期,任何覆盖键内容的命令(如 set 或 getset)都会清除键的超时值。 要手动清除键的超时,请使用 persist 命令:

  • persist key_melon

如果成功完成,persist 命令将返回(整数)1,这表明密钥不再过期。

总结

本指南详细介绍了在 Redis 中用于操作和检查键持久性的一些命令。 如果还有其他相关的命令、参数或者程序你想在本指南中看到,请在下面的评论中询问或者提出建议。

有关 Redis 命令的更多信息,请参见我们关于如何管理 Redis 数据库的系列教程。