我在java中使用jedis进行redis连接。
我想使用jedis从redis服务器中删除类似的模式密钥。
例如
1. 1_pattern
2. 2_pattern
3. 3_pattern
4. 4_pattern
5. 5_pattern
我们可以使用del(key),但它只删除一个键。
我想要del(“* _ pattern”)
之类的东西答案 0 :(得分:0)
您可以将DEL key [key ...]
命令与KEYS pattern
命令结合使用,以获得所需内容。
例如,您可以使用Jedis这样做(伪代码):
// or use "?_pattern"
jedis.del(jedis.keys("*_pattern"));
但请注意,此操作可能需要很长时间,因为KEYS
为O(N)
,其中N
是数据库中的键数,DEL
为{{1}其中O(M)
是键的数量,对于每个被删除的键,它是列表/集合/等,它是M
,其中O(P)
是列表/集的长度/等
答案 1 :(得分:0)
请参阅我的回答here。
在你的情况下,它是对deleteKeys的简单调用(" * _ pattern");
答案 2 :(得分:0)
它应该在redis中使用正则表达式。在您的代码中:
String keyPattern = "*"+"pattern";
// or String keyPattern = "*_"+"pattern";
Set<String> keyList = jedis.keys(keyPattern);
for(String key:keyList){
jedis.del(key);
}
//免费redis资源 我认为上述解决方案运作良好。
答案 3 :(得分:0)
最有效的方法之一是减少 redis 调用。
width