Знает ли кто-нибудь о внутренности выселения/удаления Redis LRU.Redis Internals - Выполнение LRU для выборки
Как Redis гарантирует, что старые (менее используемые) ключи удаляются первым (на случай, если у нас нет летучих ключей, и мы не устанавливаем истечение TTL)?
Я точно знаю, что у Redis есть параметр конфигурации «maxmemory-samples», который управляет размером выборки, который он использует для удаления ключей, поэтому, если вы задаете размер выборки 10, тогда он пробует 10 ключей и удаляет самые старые из среди них.
То, что я не знаю, является ли он выборкой этого ключа полностью случайным образом или у него каким-то образом есть механизм, который позволяет ему автоматически выбирать из эквивалента «более старого/менее используемого поколения»?
Насколько я знаю, он выборочно отображает ключи. –
Это то, что я нашел на http://antirez.com/post/redis-as-LRU-cache.html - вся суть использования алгоритма «образец три» - это сохранение памяти. Я думаю, что это гораздо более ценно, чем точность, тем более, что рандомизированные алгоритмы редко понимаются. Пример: выборка с тремя объектами истечет из 666 объектов из набора данных 999 с частотой ошибок всего 14% по сравнению с алгоритмом * совершенного * LRU. И в 14% оставшихся элементов едва ли есть элементы, находящиеся в диапазоне очень используемых элементов. Таким образом, выигрыш в памяти будет зависеть от точности без сомнений. –
Вы должны разместить это как ответ и принять его. :-) –