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