很多人使用redis作为简单的键/值缓存存储。有时你只想杀死一部分钥匙。
我到处看到的常见问题是"我如何做DEL prefix*
"。
出于各种原因,Redis目前还没有这个功能,我感受到他们对这样一个可能永远不会发生的功能有强烈的基本立场。
据我所知,在命令行上有很多类似于管道乐趣的解决方法:
redis-cli KEYS "prefix:*" | xargs redis-cli DEL
或使用EVAL
:
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:*
但是,我从Redis github项目的人那里了解到,使用KEYS *
是昂贵且不好的做法 - 建议在生产系统上避免使用SCAN
:{{ 3}}
指示是通过 SCAN 0 MATCH prefix:*
SCAN
有没有人知道redis中使用DEL
与DEL prefix:*
一起实现至少嘲笑圣杯的方法,一个简单的SCAN
?
或者您必须在单独的程序/ shell脚本中使用{{1}},然后解析结果并在循环中对键发出DEL吗?