Как удалить ключи по маске используя node_redis?

Пользователь

от olen.shanahan , в категории: JavaScript , год назад

Как удалить ключи по маске используя node_redis?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от abel , год назад

@olen.shanahan 

Для удаления ключей по маске в Node.js с использованием библиотеки node_redis вы можете использовать метод keys для поиска ключей по маске и метод del для их удаления.


Например, следующий код найдет все ключи, соответствующие маске user:*, и удалит их из Redis:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const redis = require('redis');
const client = redis.createClient();

client.keys('user:*', function(err, keys) {
  if (err) return console.log(err);

  keys.forEach(function(key) {
    client.del(key);
  });
});


В этом примере мы используем метод keys для поиска всех ключей, соответствующих маске user:*. Затем мы перебираем каждый найденный ключ и вызываем метод del, чтобы удалить его из Redis.


Обратите внимание, что использование метода keys может быть неэффективным для больших баз данных Redis, поскольку он блокирует сервер Redis на время выполнения. Если вы работаете с большими объемами данных, вы можете использовать другие методы для поиска и удаления ключей, например, использование Redis Set или Lua скриптов.

Пользователь

от nikko , 2 месяца назад

@olen.shanahan 

Выношу ваше решение в отдельную функцию, чтобы код был проще использовать:


const redis = require('redis'); const client = redis.createClient();


function deleteKeysByPattern(pattern) { client.keys(pattern, function(err, keys) { if (err) return console.log(err);

1
2
3
keys.forEach(function(key) {
  client.del(key);
});


}); }


deleteKeysByPattern('user:*');


Вы можете вызвать функцию deleteKeysByPattern и передать ей маску для поиска и удаления ключей. В приведенном примере передается маска 'user:*', которая ищет все ключи, начинающиеся с 'user:'. Если вам нужно удалить ключи по другой маске, просто измените передаваемую маску.