Удалите похожие ключи-паттерны из redis с помощью JAVA

Я использую jedis для подключения redis в java.

Я хочу удалить похожие ключи шаблона с сервера Redis с помощью jedis. например,
1. 1_шаблон
2. 2_шаблон
3. 3_шаблон
4. 4_шаблон
5. 5_шаблон

Мы можем использовать del (ключ), но он удалит только один ключ.

Я хочу что-то вроде del ("* _ pattern")


person dipendra    schedule 27.11.2013    source источник


Ответы (3)


Вы можете комбинировать команду DEL key [key ...] с _ 2_, чтобы получить желаемое.

Например, вы можете сделать это с помощью Джедаи вот так (псевдокод):

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

Но имейте в виду, что эта операция может занять много времени, поскольку KEYS - это O(N), где N - количество ключей в базе данных, DEL - O(M), где M - количество ключей, и для каждого удаляемого ключа это список / набор / и т. д., его O(P), где P - длина списка / набора / и т. д.

person kuporific    schedule 19.12.2013

См. Мой ответ здесь.

В вашем случае это простой вызов deleteKeys ("* _ pattern");

person corindiano    schedule 03.05.2014

Он должен использовать регулярное выражение в Redis. В вашем коде:

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

// бесплатный ресурс Redis Я думаю, что приведенное выше решение работает хорошо.

person VanThaoNguyen    schedule 09.08.2016