BookSleve Del Redis ключ по шаблону

1

Я видел этот пример при удалении ключа из шаблона redis usign

You can delete multiple keys with just one DEL command

DEL key1 key2 key3......


You can also delete all keys matching an expression this way

redis-cli KEYS "temp_cart:user*" | xargs redis-cli DEL

Скажем, у меня есть ключи: key1a, key2b, key7a,.... и я бы хотел удалить все, что начинается с ключа *

как я могу сказать, что для книжного дела это нужно? когда я передаю строку в свою функцию invalidate с помощью "keys *", похоже, это не трюк.

  • 0
    Книжный стиль не может сделать больше, чем сам Redis. Команда redis-cli KEYS "temp_cart: пользователь *" | xargs redis-cli DEL не отправляется в Redis как есть. Фактически ядро этого выполняется оболочкой следующим образом: отправьте KEYS "temp_cart: user *" в Redis, прочитайте результаты, выполните цикл по каждому результату и выполните redis-cli DEL. (Я не силен в Unix, но вы должны понять). Я попытался бы исследовать команду EVAL, но не уверен, поскольку я никогда не использовал ее.
Теги:
redis
booksleeve

1 ответ

0
Лучший ответ

У Redis нет операции "удалить по шаблону". Также обратите внимание, что вы никогда не должны использовать KEYS на производстве. В худшем случае вы должны использовать SCAN. К счастью, BookSleeve и SE.Redis автоматически используют SCAN когда они доступны. Для этого вам придется выполнять итерацию (через SCAN) и выдавать многопрофильные команды DEL. Что, в частности, именно то, что xargs делает в вашем примере.

  • 0
    поэтому, если не следует использовать KEYS _redisClient.Keys.Find (0, "key *") для поиска совпадения с подстановочным ключом, как я могу использовать SCAN для этого в книжном режиме, у вас есть пример для вопроса выше?
  • 1
    @ Просто как я уже говорил: BookSleeve и StackExchange.Redis оба автоматически пытаются использовать SCAN когда он доступен; вы должны быть в порядке, используя Find , но вы можете проверить через MONITOR что он использует SCAN а не KEYS .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню