2016-11-28 8 views
0

Мне нужно использовать NodeJS для удаления всех записей в Redis, которые соответствуют префиксу/шаблону. Я использую этот пакет: https://github.com/NodeRedis/node_redisRedis/Node delete with prefix/wildcard

Я видел несколько решений, доступных для удаления ключей Redis с префиксом и подстановочным знаком, например.

KEYS "web.*" 

Тем не менее, все эти решения полагаются на использовании KEYS команду, которая не подходит для производства из-за его блокирования сервера. Я считаю, что правильное решение включает команду SCAN (и, возможно, другие), но я не совсем понимаю, как это работает.

Я ищу простую функцию JS, которая позволяет мне передавать строку, содержащую префикс и подстановочный знак, например. «web. *», и все ключи «ключей» будут удалены.

Большое спасибо!

ответ

0

Redis однопоточный, поэтому он будет блокироваться независимо. Сканирование возвращает результат в итеративном режиме, поэтому, пока он все еще блокируется, он не будет блокироваться так долго, если он вернет подмножество общего результата.
https://redis.io/commands/scan

У вас есть решение для сканирования, которое может или не может работать для вас в зависимости от того, нужно ли оно быть атомарным или нет. How to atomically delete keys matching a pattern using Redis

+0

Как вы называете «EVAL» return redis.call («del», unpack (redis.call («ключи», ARGV [1]))) «0 префикс: *» с помощью node_redis? Благодаря! – John1984

+1

Там нет отличной документации. Однако, если вы выкапываете источник node_redis, вы можете найти несколько примеров. https://github.com/NodeRedis/node_redis/blob/ff9b727609ea125919828f7373e40082fd432eec/test/commands/eval.spec.js#L135 – davissp14

 Смежные вопросы

  • Нет связанных вопросов^_^