怎样在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”。
- set key_melon “cantaloupe”
第二个命令将其设置为在450秒后到期。
- 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),您可以使用以下指令:
- expireat key_melon 1746131400
请注意,如果您传递给expireat的时间戳已经过期,它将立即删除该键。
检查密钥过期的剩余时间
无论何时您设置一个键的过期时间,您都可以使用ttl(表示“生存时间”的缩写)检查距离过期还剩多少秒。
- ttl key_melon
(integer) 79247184
为了获取更详细的信息,您可以运行pttl命令,它会返回键失效的剩余时间(以毫秒为单位)。
- pttl key_melon
(integer) 79247156730
如果键没有设置过期时间,ttl和pttl都会返回整数-1;如果键不存在,ttl和pttl都会返回整数-2。
坚持不懈的关键
如果一个键已经设置了过期时间,任何覆盖键内容的命令(比如set或getset)都会清除键的超时值。要手动清除一个键的超时时间,请使用persist命令。
- persist key_melon
如果成功执行,`persist`命令将返回整数1,表示该键将不再过期。
结论
这个指南详细介绍了一些在Redis中用于操作和检查键持久性的命令。如果您在这个指南中想了解其他相关命令、参数或操作,请在评论中提问或提出建议。
关于Redis命令的更多信息,请查看我们的Redis数据库管理教程系列。