Go: lcacheРанее я уже рассказывал о библиотеке кэширования groupcache от Google, которая используется для кэирования файлов на dl.google.com, Google Monitoring и др. Она прекрасно работает когда нужно держать в памяти массивы байтов и не думать о времени их жизни в кэше. Но на практике частые случаи, когда кэшировать удобней и эффективней объекты в их внутреннем представлении с заданием срока их жизни в кэше, в этом случаю groupcache нам не помощник. Поэтому сегодня я решил рассказать о библиотеке lcache. ![]() Характерные особенности
Установка
Работа с библиотекойПодключение
Создание объекта кэша
В этом примере создается объект кэша, в котором будут хранится максимум 102400 значений, распределенные внутри по 16 нодами (для оптимизации параллельного доступа, а для синхронизации используется RWMutex, свой для каждой ноды) с временем жизни 86400 секунд. В программе можно создавать неограниченное число объектов-кэшей индивидуальных под конкретные нужды (новый кэш не порождает новых горутин). В случае достижения максимального количества элементов наиболее старые элементы удаляются. В качестве ключей кэша используются строки, а в качестве значений могут быть использованы произвольные объекты. Set/GetПри помощи методов Get/Set можно задать получить значение из кэша. Если значения в кэше нет, то возвращается nil.
Доступ через кэш (Fetch)
Метод Fetch работает следующим образом, если значение есть в кэше, то он сразу возвращает его. Если его нет, то для получения значения используется переданная функция. В случае отличного от nil значения оно помещается в кэш и возвращается в качестве значения Fetch. Если nil, то в кэш ничего не кладется и возвращается nil. DeleteУдаляет переданный ключ из кэша
Удаление всех ключей
Инкрементальный счетчик
Атомы кэшированияАтомы кэширования lcache.Atom - это упрощенная реализация lcache.Cache, которая позволяет закэшировать один объект на заданное время, после истечения времени значение станет равным nil. Atom — потокобезопасен. Пример работы с атомом ниже:
01.03.2019 |
популярные тэги
наука
интересно
новости
технологии
история
go
golang
программирование
it
искусственный интеллект
путешествия
природа
космос
ai
базы данных
медицина
science
анализ текстов
ии
text mining
робототехника
авто
музыка
роботы
интернет
нейронные сети
robots
space
вокруг света
postgresql
алгоритмы
гитара
животные
оружие
google
nosql
авиация
здоровье
техника
auto
|