January 2026

S M T W T F S
     123
4 5678 910
11 12 1314151617
18 192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Monday, June 4th, 2007 05:38 pm

Вопрос для программистов:

Предположим, у нас имеется некий кеш, который должен содержать произвольные данные. Данные имеют срок годности, для каждой единицы данных разный, который определяется клиентом. Есть два способа общаться с таким кешем:

1. Когда что-то кладется в кеш, клиент говорит срок годности (возьми А и держи 5 минут)
2. Когда что-то берется из кеша, клиент говорит срок годности (дай мне А не старше 5 минут)

Есть ли какие-то причины предпочитать один из этих способов другому, и если да, то какие?
Tuesday, June 5th, 2007 02:52 am (UTC)
А почему нельзя 1 и 2? :) В смысле раскидывать их по мелким суб-кешам с датой тухлости, при приходе запроса А не старше 5 минут заглядывается в суб-кеш который 0-5 минут. Размер субкеша будет не больше чем всё одним куском, поиск будет не медленнее чем одним куском.
Очистка может состоять в выкидывании суб-кеша -5-0 в урну :)
Разумеется, надо думать как именно разбить на суб-кеши -- даже наверное построить график распределения объектов по времени протухания.
Tuesday, June 5th, 2007 07:10 am (UTC)
Ну зачем ими сильно управлять :) Скажем, если всё честным образом укладывается в 5-минутные слоты, то выбор одного из кешей превращается в простую операцию вычисления индекса.
В случае, если скорость реакции кеша действительно супер-важна, отсечение ненужных кеш-деревьев из леса ускоряет поиск.

Другими словами нужно больше данных о том, как это должно работать :) Но лично мне кажется что от некоей уборщицы в кеше не убежать, значит будет логичнее хранить дату прокисания документа, чтобы минимализировать "а мы его пять минут назад убили" (скорость же важна) и как-то организовать очистку с пристрелом на нужды клиента (например очистка будет бить объекты когда время поиска в кеше подбирается к критическому).


Если лень писать самому то есть штуки типа EHCache, в которых и политики выселения запомненных элементов есть, и прочие мелкие нужности.