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