Zache: A Simple Ruby In-Memory Cache

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Месяц назад я столкнулся с проблемой: я не смог найти гем Ruby, который мог бы выполнять кэширование в памяти с возможностью истечения времени ожидания. После небольшого исследования я решил реализовать свой собственный и назвал его Zache (как “нулевой кэш”, так как нет никакого бэкэнда). Вот как это работает:

Сначала вы создаете кэш:

Затем вы извлекаете значение по ключу, также указывая блок, который будет выполнен, если ключ отсутствует или истек.

Здесь, :x является ключом, а 15 - количество секунд, в течение которых он будет храниться в кэше, пока не истечет срок его действия.

Важно отметить, что ключ не будет автоматически удален из кэша. Он останется там до следующего вызова get(:x). Только в этот момент он будет помечен как “истекший”. Для очистки кэша вы можете вызвать zache.clean(), и все истекшие ключи будут удалены.

Вы можете делать это регулярно в отдельном потоке, например, каждую минуту:

Также, конечно, Zache является потокобезопасным.

Драгоценный камень находится в этом репозитории GitHub. Не стесняйтесь сообщать о найденных вами ошибках или помогать нам с добавлением дополнительных функций.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-15 at 06:44

sixnines availability badge   GitHub stars