Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Redis不在多个键上提供批处理集过期时间操作?_Redis - Fatal编程技术网

为什么Redis不在多个键上提供批处理集过期时间操作?

为什么Redis不在多个键上提供批处理集过期时间操作?,redis,Redis,我想设置多个密钥的过期时间,但似乎我必须逐个过期每个密钥。为什么Redis不提供类似“mset”的操作?因为此操作不太频繁,您可以通过以下方式轻松模拟它: 服务器端Lua脚本 或 管道化多个过期命令 无论选择何种解决方案,它都只会生成到redis服务器的一次往返。您可以使用一个脚本 EVAL 'for i, name in ipairs(redis.call("KEYS", "0*")) do redis.call("EXPIRE", name, 10); end' 0 你能再解释一下

我想设置多个密钥的过期时间,但似乎我必须逐个过期每个密钥。为什么Redis不提供类似“mset”的操作?

因为此操作不太频繁,您可以通过以下方式轻松模拟它:

  • 服务器端Lua脚本

  • 管道化多个过期命令

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

您可以使用一个脚本

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

你能再解释一下这里发生了什么吗?
“0*”
10
的用途是什么?“0*”是一个通配符,用于获取所有以值0开头并设置10秒过期的密钥。对于使用
spring数据的用户,有内置的管道支持-