Допустим, у меня есть несколько ключей в магазине Redis. Я хочу сохранить некоторые пары ключ-значение в новой структуре хэш-карты. Я также хочу сохранить ограничение на размер этой хэш-карты и удалить наименее недавно использовавшуюся пару ключ-значение хэш-карты, когда ее размер (хэш-карта) превышает предел, и не касаться остальных уже существующих структур данных Redis. Предоставляет ли мне Redis какую-либо такую функциональность, где я могу выполнить вытеснение записей хэш-карты в стиле LRU, не касаясь остальных сохраненных ключей? Или можно каким-либо образом построить его поверх того, что предоставляет Redis? Спасибо за помощь!
Redis: хэш-карта с ограничением размера и функцией исключения LRU
Ответы (1)
Предоставляет ли мне Redis какую-либо такую функциональность, где я могу выполнить вытеснение записей хэш-карты в стиле LRU, не касаясь остальных сохраненных ключей?
Нет, это не так.
Или можно каким-либо образом построить его поверх того, что предоставляет Redis?
Да, можно.
Есть 3 способа сделать это:
Логика на стороне клиента: вы можете управлять логикой вытеснения полей хэша в своем приложении. Для этого потребуется хранить дополнительные (мета) данные в значениях хэша (т. е. разграничить/структурировать метаданные и реальные данные в значении), на уровне хэша (вы можете использовать «специальные» имена полей, например «_eviction_heap_»), и/ или с дополнительными структурами данных (похоже, будет полезен Sorted Set per Hash).
Lua на стороне сервера: для оптимизации вышеперечисленного вы можете упаковать логику в Lua и выполнить ее с помощью
EVAL
.Модули Redis: это продвинутый материал, но если вы готовы к этому, вы можете делать практически все, включая реализацию новой "хэш-карты с ограничением размера и функцией вытеснения LRU" em> структура данных.