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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/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 DEL?_Redis - Fatal编程技术网

有没有办法使用扫描在匹配键上实现一个简单的Redis DEL?

有没有办法使用扫描在匹配键上实现一个简单的Redis DEL?,redis,Redis,许多人使用redis进行简单的键/值缓存存储。有时,您只想删除密钥的一个子集 我在任何地方都能看到一个常见的问题,那就是如何做DEL前缀* 由于各种原因,Redis目前没有这项功能,我感觉他们对这项功能有很强的基础地位,这可能永远不会发生 据我所知,在命令行中有许多类似的解决方法: redis-cli KEYS "prefix:*" | xargs redis-cli DEL 或使用评估: 然而,我从Redis github项目的人员那里了解到,使用密钥*是一种昂贵且糟糕的做法,建议在

许多人使用redis进行简单的键/值缓存存储。有时,您只想删除密钥的一个子集

我在任何地方都能看到一个常见的问题,那就是如何做DEL前缀*

由于各种原因,Redis目前没有这项功能,我感觉他们对这项功能有很强的基础地位,这可能永远不会发生

据我所知,在命令行中有许多类似的解决方法:

 redis-cli  KEYS "prefix:*" | xargs redis-cli  DEL 
或使用评估:

然而,我从Redis github项目的人员那里了解到,使用密钥*是一种昂贵且糟糕的做法,建议在生产系统上避免使用密钥:

指示是通过扫描匹配按键模式的更好方法

在redis中有没有人知道一种方法,可以将SCAN与DEL结合使用,至少可以模拟圣杯,一个简单的DEL前缀:


或者您必须在单独的程序/shell脚本中使用SCAN,然后解析结果并在循环中的键上发出DEL之类的命令?

我怀疑您是否能在SO中找到更好的解决方案-GH人员通常最了解;无论如何,这里有一个我不久前制作的bash脚本
 EVAL "local keys = redis.call('keys', ARGV[1]) \n for i=1,#keys,5000 do \n redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) \n end \n return keys" 0 prefix:*
 SCAN 0 MATCH prefix:*