怎样在Redis中使键过期

简介

Redis是一个开源的内存键值数据存储系统。Redis键默认是持久化的,也就是说,除非手动删除,否则Redis服务器会继续存储它们。然而,在某些情况下,你可能设置了一个键,但是你知道过一段时间后会想要删除它。换句话说,你希望这个键是易失的。

本教程解释了如何设置密钥的过期时间,检查密钥剩余的时间以及取消密钥的过期设置。

怎样使用这个指南

这份指南是以速查表的形式编写的,其中包含了自足的例子。我们鼓励你直接跳转到与你正在完成的任务相关的任何部分。

本指南演示的命令在运行Redis版本6.0.16的Ubuntu 22.04服务器上进行了测试。如果要设置相似的环境,可以按照我们的《如何在Ubuntu 22.04上安装和保护Redis》指南中的第1步进行操作。我们将通过使用Redis命令行接口redis-cli来运行这些命令,展示它们的行为。如果你使用不同的Redis接口,例如Redli,某些命令的确切输出可能有所不同。

或者,您可以为了测试这些命令,预配一个托管的Redis数据库实例,但是根据您的数据库提供商允许的控制级别,此指南中的某些命令可能无法按照指示工作。若要预配Silicon Cloud托管数据库,请按照我们的托管数据库产品文档操作。然后,您必须安装Redli或者设置一个TLS隧道,以便通过TLS连接到托管数据库。

设定密钥过期

您可以使用expire命令为现有的密钥设置过期时间,该命令需要密钥的名称和到期前的秒数作为参数。为了演示这一点,请运行以下两个命令。第一个命令创建了一个名为key_melon的字符串密钥,其值为“cantaloupe”。

  1. set key_melon “cantaloupe”

 

第二个命令将其设置为在450秒后到期。

  1. expire key_melon 450

 

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

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

例如,要将key_melon设置为在2025年5月1日GMT时间下午8:30过期(Unix时间戳为1746131400),您可以使用以下指令:

  1. expireat key_melon 1746131400

 

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

检查密钥过期的剩余时间

无论何时您设置一个键的过期时间,您都可以使用ttl(表示“生存时间”的缩写)检查距离过期还剩多少秒。

  1. ttl key_melon

 

Output

(integer) 79247184

为了获取更详细的信息,您可以运行pttl命令,它会返回键失效的剩余时间(以毫秒为单位)。

  1. pttl key_melon

 

Output

(integer) 79247156730

如果键没有设置过期时间,ttl和pttl都会返回整数-1;如果键不存在,ttl和pttl都会返回整数-2。

坚持不懈的关键

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

  1. persist key_melon

 

如果成功执行,`persist`命令将返回整数1,表示该键将不再过期。

结论

这个指南详细介绍了一些在Redis中用于操作和检查键持久性的命令。如果您在这个指南中想了解其他相关命令、参数或操作,请在评论中提问或提出建议。

关于Redis命令的更多信息,请查看我们的Redis数据库管理教程系列。

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds