redis 如何查询过期key
其他 283
-
Redis 提供了用于查询过期 key 的命令——TTL 和 PTTL。
- TTL 命令:TTL(key) 的作用是获取指定 key 的剩余过期时间,返回值为秒数。
- 若 key 不存在或已过期,返回 -2;
- 若 key 存在并且没有设置过期时间,返回 -1;
- 其他情况下,返回 key 的剩余过期时间。
示例:
127.0.0.1:6379> SET mykey "value" EX 300 OK 127.0.0.1:6379> TTL mykey (integer) 298 127.0.0.1:6379> TTL nonexistingkey (integer) -2 127.0.0.1:6379> SET anotherkey "value" OK 127.0.0.1:6379> TTL anotherkey (integer) -1- PTTL 命令:PTTL(key) 的作用与 TTL 相似,只是返回值为毫秒数。用法和返回值与 TTL 一致。
示例:
127.0.0.1:6379> SET mykey "value" PX 300000 OK 127.0.0.1:6379> PTTL mykey (integer) 298040 127.0.0.1:6379> PTTL nonexistingkey (integer) -2 127.0.0.1:6379> SET anotherkey "value" OK 127.0.0.1:6379> PTTL anotherkey (integer) -1通过使用 TTL 或 PTTL 命令,可以查询指定 key 的过期时间,并判断 key 是否已过期。
1年前 - TTL 命令:TTL(key) 的作用是获取指定 key 的剩余过期时间,返回值为秒数。
-
Redis 中查询过期的 key,可以使用以下几种方式:
- 使用
TTL命令,该命令可以查看指定 key 的存活时间,单位为秒。当 key 不存在或已过期时,返回-2;当 key 存在但没有设置过期时间时,返回-1。
> TTL key (integer) 100- 使用
PTTL命令,该命令可以查看指定 key 的存活时间,单位为毫秒。与TTL命令类似,当 key 不存在或已过期时,返回-2;当 key 存在但没有设置过期时间时,返回-1。
> PTTL key (integer) 100000- 使用
KEYS命令,该命令可以列出所有的 key,然后再使用TTL命令判断每个 key 的过期时间。
> KEYS * 1) "key1" 2) "key2" 3) "key3" > TTL key1 (integer) 100 > TTL key2 (integer) -2 > TTL key3 (integer) 50需要注意的是,
KEYS命令会阻塞 Redis 服务器的其他操作,且在大规模部署中不适合使用。可以考虑使用SCAN命令进行迭代遍历 key。- 使用
SCAN命令,该命令可以迭代遍历数据库中的 key,通过指定游标和匹配模式来获取符合条件的 key。
> SCAN 0 MATCH key* 1) "12" 2) 1) "key1" 2) "key2" 3) "key3"此命令可通过多次迭代 SCAN 命令来获取所有匹配的 key。然后再使用
TTL命令判断每个 key 的过期时间。- 使用 Redis 的 Pub/Sub 订阅/发布功能来监听 key 过期事件。可以使用
PSUBSCRIBE命令订阅__keyevent@*__:expired通配符模式,一旦有 key 过期事件发生,就会通过消息发送给订阅者。
> PSUBSCRIBE __keyevent@*__:expired Reading messages... (press Ctrl-C to quit) 1) "pmessage" 2) "__keyevent@0__:expired" 3) "__keyevent@0__:expired" 4) "key1" 5) ""通过这种方式可以实时获取 key 的过期事件,但需要注意在使用时合理控制订阅和退订的时机,避免资源浪费。
以上是 Redis 查询过期 key 的几种方式,可以根据具体需求选择合适的方法。
1年前 - 使用
-
查询 Redis 中的过期键可以使用 TTL 命令或者 PTTL 命令。TTL 命令用以查询键的剩余过期时间(以秒为单位),而 PTTL 命令则以毫秒为单位返回剩余过期时间。以下是在 Redis 中查询过期键的方法和操作流程。
- 使用 TTL 命令查询过期键
TTL 命令用来查询 Redis 键的剩余过期时间,它可以用于查询任意类型的键。
操作流程如下:
- 连接 Redis 客户端。
- 使用
TTL key命令来查询键 key 的剩余过期时间,其中 key 是要查询的键名。 - 根据返回的结果,如果键不存在或者键没有设置过期时间,则返回 -1;如果键已经过期,则返回 -2;否则,返回键的剩余过期时间。
例如,查询键名为
mykey的键的剩余过期时间:TTL mykey- 使用 PTTL 命令查询过期键
PTTL 命令的用法和 TTL 命令相同,区别在于 PTTL 命令返回的是以毫秒为单位的剩余过期时间。
操作流程如下:
- 连接 Redis 客户端。
- 使用
PTTL key命令来查询键 key 的剩余过期时间,其中 key 是要查询的键名。 - 根据返回的结果,如果键不存在或者键没有设置过期时间,则返回 -1;如果键已经过期,则返回 -2;否则,返回键的剩余过期时间(以毫秒为单位)。
例如,查询键名为
mykey的键的剩余过期时间:PTTL mykey综上所述,使用 TTL 命令或 PTTL 命令可以查询 Redis 中的过期键。根据返回的结果判断键是否过期,可以方便地进行相关操作。
1年前