Как надежнее удалить больше 2КК ключей из Redis?

Всем привет! Подскажите, очень нужно.

Допустим есть база, нужно по префиксу удалять данные (стандартно).

$keys = $this->redis->keys($this->_prefix . '*');
$this->redis->del($keys);


Для маленьких объемов - работает хорошо. А вот как поступать с большим кол-вом данных? Тут и метод KEYS не подходит т.к. имеет сложность O(N). Спасибо за ваши варианты!
  • Вопрос задан
  • 362 просмотра
Решения вопроса 1
С 3.0 для такого рекомендуется использовать теги. Keys hash tags
В вашем случае - их нужно использовать вместо префикса.
Имена ключей должны выглядеть примерно так - {user1000}.following, где user1000 - это тег.
KEYS по тегу не будет проверять все ключи в бд т.е сложность будет на порядки меньше чем O(N)
И бонусом - будет совместимо с redis-cluster
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
redis-cli KEYS "prefix:*" | xargs redis-cli DEL, например?
Ответ написан
Комментировать
zoonman
@zoonman
⋆⋆⋆⋆⋆
eval "for _,k in ipairs(redis.call('keys','key:*:pattern')) do redis.call('del',k) end" 0


Замените key:*:pattern на свой шаблон и скормите redis-cli.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 09:18
500 руб./в час
26 апр. 2024, в 06:46
1500 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект