Удаление определенных ключей из хэша memcached

Я пытаюсь кэшировать таблицу t_abc, используя memcached, для моего приложения rails. В таблице 50 000 записей. И, наконец, я хочу иметь 20 000 ключей (которые будут иметь форму «abc_» + id). Когда 20 001-я запись должна быть вставлена ​​в кеш, я хочу, чтобы из кеша был удален наименее недавно использованный ключ из этих 20 000 (приведенной выше формы, а не какие-то другие ключи в memcached). Как мне этого добиться?

ПРИМЕЧАНИЕ. Я сохраняю срок действия = 0 для всех записей.


person Rishav Raj    schedule 12.11.2013    source источник
comment
попробуйте Rails.cache.delete('key'), если он работает   -  person Gopal S Rathore    schedule 12.11.2013
comment
Ваша стратегия звучит неправильно. С Memcached вы должны беспокоиться только об общей доступной оперативной памяти, а затем позволить memcached решать, срок действия ключей истечет. Также см. этот вопрос: stackoverflow.com/questions/10122384/memcache- и-истекшие-элементы . Memcached довольно умно относится к срокам действия ключей. Он почти точно сделает то, что вы хотели, без необходимости писать что-либо дополнительно.   -  person Chandranshu    schedule 12.11.2013
comment
Спасибо за ответ. Меня беспокоит то, что если кеш заполнен, и я пытаюсь сохранить ключ для таблицы A в кеше, он выглядит более чистым для меня, если каким-то образом я могу гарантировать, что выселенный ключ относится только к таблице A, а не к таблице B. Если я оставлю это в memcached, он может удалить ключ таблицы A или таблицы B.   -  person Rishav Raj    schedule 12.11.2013


Ответы (1)


Нет, к сожалению, вы не можете эффективно делать то, что хотите, с помощью memcached.

Он имеет один LRU, который работает со всеми данными, которые вы храните. Поэтому, если вы храните данные из нескольких таблиц, то доля записей memcached, занимаемых каждой таблицей, зависит от относительных шаблонов доступа к данным из разных таблиц.

Таким образом, чтобы контролировать количество кэшируемых строк таблицы, на самом деле все, что вы можете сделать, это настроить размер вашего memcached и изменить то, какие другие данные будут храниться.

(Кроме того, для оценки конфигурации memcached вы можете рассмотреть возможность использования другой метрики, такой как частота попаданий или среднее время отклика, а не просто количество кэшированных строк.)

person Eamonn O'Brien-Strain    schedule 18.11.2013