Как удалить диапазон ключей в memcached (используя Dalli + RoR) - PullRequest
4 голосов
/ 16 января 2012

Я использую Ruby on Rails и использую гем Dalli для доступа к memcached.

Вопрос: как удалить диапазон ключей (не кратный, но диапазон) для чего-то вроде: удалить все memcachedзаписи с ключом, который начинается с «USERINFO», другими словами, как я могу использовать шаблоны для удаления диапазона ключей?

Ответы [ 2 ]

0 голосов
/ 18 января 2017

Короткий ответ: нет, и вы не хотите этого делать.

Драгоценный камень dalli или memcached поддерживает удаление нескольких ключей одной командой из коробки и по уважительной причине.Поскольку memcached определяет местоположение кэшированных значений путем хеширования ключа, в производственной среде с несколькими узлами кэша операция delete_matched должна будет сканировать все узлы в поисках ключей, которые потенциально совпадают.Это побеждает ключевую цель memcached - производительность.

Существует несколько реализаций, которые расширяют dalli и обещают обеспечить реализацию deleted_matched.Все это, кажется, компромиссное удобство программиста по производительности, поэтому используйте их с осторожностью.Хорошее начало - взглянуть на источники этих драгоценных камней перед их использованием.


Смежные вопросы Можно ли получить / найти ключи Memcached по префиксу?

0 голосов
/ 09 июля 2012

Вы должны взглянуть на Rails.cache.delete_matched: http://apidock.com/rails/ActiveSupport/Cache/Store/delete_matched

Делает именно то, что вы хотите, теоретически:

Rails.cache.delete_matched /^USERINFO/

...