为什么Redis不提供对多个键的批量设置过期时间操作?

hal*_*ack 7 redis

我想给多个key设置一个过期时间,但是好像每个key都要一个一个过期。为什么Redis不提供一个类似“mset”的操作呢?

Did*_*zia 7

因为这个操作不是那么频繁,你可以通过以下方式轻松模拟它:

  • 服务器端 Lua 脚本

或者

  • 管道化多个过期命令

无论选择哪种解决方案,它都只会生成到 Redis 服务器的单次往返。


Rud*_*dge 6

您可以使用一个脚本作为它。

EVAL 'for i, name in ipairs(redis.call("KEYS", "0*")) do redis.call("EXPIRE", name, 10); end' 0
Run Code Online (Sandbox Code Playgroud)

  • 你能再解释一下这里发生了什么吗?“0*”和“10”的用途是什么? (2认同)
  • “0*”是通配符,用于获取所有以 0 开头并设置 10 秒过期的密钥。 (2认同)