2

我在java中使用jedis进行redis连接。

我想使用 jedis 从 redis 服务器中删除类似的模式键。例如
1. 1_pattern
2. 2_pattern
3. 3_pattern
4. 4_pattern
5. 5_pattern

我们可以使用 del(key),但它只会删除一个键。

我想要 del("*_pattern")

4

4 回答 4

0

您可以将DEL key [key ...]命令与KEYS pattern命令结合使用以获得所需的内容。

例如,您可以像这样使用Jedis执行此操作(伪代码):

// or use "?_pattern" 
jedis.del(jedis.keys("*_pattern"));

但请注意,此操作可能需要很长时间,因为数据库中的键数KEYSO(N)哪里,键的数量是哪里,并且对于每个要删除的键,即列表/集/等,它的,哪里是列表/集合/等的长度。NDELO(M)MO(P)P

于 2013-12-19T14:16:17.447 回答
0

在这里查看我的答案。

在您的情况下,这是对 deleteKeys("*_pattern"); 的简单调用。

于 2014-05-03T12:04:27.777 回答
0

它应该在 redis 中使用正则表达式。在您的代码中:

String keyPattern = "*"+"pattern";
// or String keyPattern = "*_"+"pattern";
Set<String> keyList = jedis.keys(keyPattern);
for(String key:keyList){
    jedis.del(key);
}

// 免费的 redis 资源我认为上面的解决方案效果很好。

于 2016-08-09T08:01:42.533 回答
0

最有效的方法之一是减少 redis 调用。

        String keyPattern = "*"+"pattern";
        Set<String>  keys = redis.keys(keyPattern);
        if (null != keys && keys.size() > 0) {
            redis.del(keys.toArray(new String[keys.size()]));
        }
 
于 2021-08-09T13:34:40.267 回答