想知道Redis里设置的超时时间怎么查,快速看下redis超时配置情况
- 问答
- 2025-12-24 12:01:12
- 7
用户想知道怎么查看Redis里设置的超时时间,以及快速了解一下Redis的超时配置情况,这个问题很实际,因为在使用Redis时,我们经常需要确认某个键还能存活多久,或者看看服务器上关于过期键的整体设置是怎么样的,下面就直接说方法,不绕弯子。
第一部分:查看某个特定Key的剩余生存时间
最常用的场景是,你已经知道了一个Key的名字,想知道它还有多久会过期,Redis提供了专门的命令来做这个事。
主要用到的命令是 TTL,它的用法很简单,在Redis命令行里输入 TTL your_key_name 就可以了,你有一个叫 user_session:12345 的key,你想知道它还能活多久,就输入 TTL user_session:12345。
这个命令返回的结果有三种情况,需要特别注意看(根据Redis命令文档的说明):
- 返回一个大于0的整数:比如返回
86,这表示这个Key还剩下86秒就会过期,这是最常见的情况,直接告诉你剩余的秒数。 - 返回 -1:这意味着这个Key存在,但是它没有设置过期时间,是永久有效的,除非你手动删除它,否则它会一直待在Redis里。
- 返回 -2:这意味着你查询的这个Key已经过期了,或者根本就不存在,Redis会自动删除过期的Key(取决于配置,后面会提到),所以返回-2通常就意味着这个Key已经没了。
还有一个类似的命令叫 PTTL,它的作用和 TTL 一模一样,唯一的区别是它返回的不是秒,而是毫秒。TTL 返回10,表示还剩10秒;PTTL 返回10000,表示还剩10000毫秒,在需要更精确控制的时候会用上。
快速检查一个Key的超时情况,就用 TTL key_name,然后根据上面的三种返回值来判断就行。

第二部分:查看服务器上关于Key过期的整体配置
我们不光想知道一个Key的剩余时间,还想了解Redis服务器本身是怎么处理过期Key的,这涉及到一些服务器级别的配置参数,这些参数决定了Redis过期键的删除策略和性能表现。
查看这些配置需要使用 CONFIG GET 命令,下面这几个配置项是和过期时间最相关的:
-
查看是否开启过期键的被动删除:这个其实没有直接的配置,因为Redis默认总是允许给Key设置过期时间,我们更关心的是删除策略。

-
查看过期键的删除策略配置:这是重点,Redis有两种主要的删除策略,通过
CONFIG GET hz来查看相关配置。- 主动删除(定期删除):Redis会定期地随机测试一些设置了过期时间的Key,如果发现有过期的,就把它删掉,这个“定期”的频率是由
hz这个参数控制的,输入CONFIG GET hz,它会返回一个数字,默认通常是10,这意味着Redis每秒会进行10次后台任务循环,其中就包括检查过期Key,这个值越大,检查越频繁,对CPU的消耗也越高,但过期Key能更及时地被清理。 - 被动删除(惰性删除):当客户端尝试访问一个Key时,Redis会先检查这个Key是否已经过期,如果过期了就立刻删除,然后返回空值,这个策略是内置的,不需要特别配置。
- 主动删除(定期删除):Redis会定期地随机测试一些设置了过期时间的Key,如果发现有过期的,就把它删掉,这个“定期”的频率是由
-
查看内存满时的淘汰策略:这是一个非常重要的相关配置,当Redis的内存用满了,再往里写新数据的时候怎么办?这个行为是由
maxmemory-policy策略决定的,通过CONFIG GET maxmemory-policy来查看。- 这个配置的值有很多种,
noeviction:默认策略,不删除任何Key,直接返回错误,写操作会失败。allkeys-lru:从所有Key中,挑最近最少使用的(LRU算法)那些Key删除,腾出空间。volatile-lru:只从那些设置了过期时间的Key中,挑最近最少使用的进行删除。volatile-ttl:这个和超时时间直接相关!它会优先删除剩余生存时间最短(TTL最小) 的Key,也就是最快就要过期的Key。- 还有其他一些如
allkeys-random,volatile-random等。
- 了解这个配置很重要,因为它决定了在内存压力下,你的过期Key会被如何对待,比如设置了
volatile-ttl,那么系统会优先清理快过期的Key,这可能符合你的预期。
- 这个配置的值有很多种,
第三部分:其他有用的相关命令和信息
除了上面最核心的,还有一些命令可以帮助你了解超时配置的情况。
PERSIST命令:这个命令是“撤销”过期时间的,如果你给一个Key设置了过期时间,后来又想让它变成永久的,可以用PERSIST key_name,这样这个Key的过期时间就会被移除,变成永久的了。EXPIRE和PEXPIRE命令:这是用来设置过期时间的。EXPIRE key seconds是设置多少秒后过期,PEXPIRE key milliseconds是设置多少毫秒后过期,既然问怎么查,顺带提一下怎么设,这样更完整。OBJECT命令:这是一个内部命令,可以查看Key的一些底层信息。OBJECT IDLETIME key_name可以查看这个Key有多久没被访问了(单位秒),这个信息和TTL不同,TTL是看还能活多久,IDLETIME是看已经闲置了多久,这个对分析Key的使用模式有帮助。
总结一下快速查看的步骤:
- 查单个Key:直接使用
TTL key_name命令。 - 查服务器配置:使用
CONFIG GET hz看检查频率,使用CONFIG GET maxmemory-policy看内存满时的处理策略,特别是会不会优先删快过期的Key。
基本上,通过这些命令,你就能很清楚Redis里超时时间的设置情况和整体的配置行为了,操作都很直接,在Redis的命令行界面里输入就能看到结果。
本文由畅苗于2025-12-24发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://www.haoid.cn/wenda/67535.html
