Я реализую кеш, используя карту, расширенную из LinkedHashMap (поэтому я могу реализовать removeEldestEntry). В старой реализации используется обычная хэш-карта, обновленная с заданным интервалом. Мне было интересно, как я могу хранить данные в кэше. Я сомневаюсь, что я могу просто обновиться в определенное время, не испортив точку LRU. Было бы особенно дорого запросить БД для отметки времени в записи?Обновление кэша LRU
ответ
Я закончил работу с LinkedHashMap, заказал время доступа и проверил против db для временных меток. Это работало как прелесть и значительно уменьшало нагрузку на память приложения.
Почему бы не использовать OS Cache - нет смысла изобретать колесо.
Или любой другой кеш, если на то пошло. У большинства есть время для жизни. –
Причина в том, что это очень старый проект, и ни один из первоначальных разработчиков не остается. Я хотел бы избежать добавления каких-либо новых зависимостей и просто переустановить один файл. –
@Bobnix. Возможно, но я считаю, что вы не должны срезать углы. :) –
- 1. Операция кэша LRU Пайтона
- 2. Сложность алгоритма кэша LRU
- 3. Параллельная реализация кэша LRU
- 4. Python: построение кэша LRU
- 5. Параллельная версия кэша LRU
- 6. Выполнение кэша LRU в Java
- 7. Кэш FIFO против кэша LRU
- 8. Использование для кэша LRU в functools
- 9. Вопрос о реализации LRU кэша в Java
- 10. Обновление кэша кэша после развертывания
- 11. Обновление асинхронного кэша с абстракцией весеннего кэша
- 12. ConcurrentModificationException при обновлении хранимого Iterator (для реализации кэша LRU)
- 13. Cocos2D - обновление кэша кадров?
- 14. Обновление кэша посетителя
- 15. Обновление кэша геокодирования
- 16. Обновление манифеста кэша приложений
- 17. Обновление ручного результирующего кэша
- 18. Обновление кэша сервера Eureka
- 19. Обновление кэша сервера PHP
- 20. Обновление кэша Magento Уведомление
- 21. Обновление весеннего кэша
- 22. Обновление кэша: обновить каждое обновление db?
- 23. LRU кэширование в C
- 24. html5 обновление кэша силы приложения
- 25. Обновление кэша Apigee при доступе
- 26. Обновление кэша репозитория в Pentaho
- 27. Лучшее понимание алгоритма LRU
- 28. LRU реализация в производственном коде
- 29. LRU Cache C++ Реализация
- 30. реализация кэша MRU
http://download.oracle.com/javase/1.4.2/docs/api/java/util/LinkedHashMap.html#removeEldestEntry%28java.util.Map.Entry%29 EldestEntry - _number based_, а не time- исходя из. В LRU вам нужно минимальное время выживания - ограничение во времени, EledestEntry - ограничение длины - ограничение по размеру. Мне интересно, как вы планируете использовать LRU с помощью EldestEntry? – Nishant
@ Нишан, у меня создалось впечатление, что LRU просто управляет тем, что было удалено, а не когда. Когда я ударил ограничение по размеру, я хочу удалить объект, который использовался в последнее время. –
LRU - наименее недавно используемый, как я знаю, должен удалить самую старую запись. Другими словами, вы хотите удалить объект, который запрашивается наименее часто. Теперь, ваш хэш-файл размером, скажем, 100 и 100-й элемент является наиболее часто используемым, вы хотите его удалить? Существует два варианта (1) использования очереди приоритетов с приоритетом, установленным на отметке времени при добавлении объекта (2) Использование LHM, но каждый раз, когда вызывается get(), удаляйте запись и повторно вставляете на карту mimick LRU. – Nishant