Простое кэширование на Go
Go to file
serr 78183ec9b2 readme md 2025-01-06 01:36:39 +03:00
README.md readme md 2025-01-06 01:36:39 +03:00
candycache.go delete a few words 2025-01-06 00:16:20 +03:00

README.md

Go Candy Cache 🍬

CandyCache — это простой и эффективный кэш на языке Go, который позволяет хранить данные с ограниченным временем жизни (TTL).

Установка

Для использования CandyCache в вашем проекте, установите его, используя go get git.hikan.ru/serr/candycache, далее просто добавьте в блок импорта.

Основные возможности

  • Автоматика: автоматическая очистка устаревших элементов и возможность ее отключения.
  • Возможность ручного управления.
  • Безопасность: конкурентный доступ к данным возможен благодаря мьютексам.
  • Гибкость: кэш может хранить любые типы данных.

Использование

Создание кэша

С автоматической очисткой

Для создания нового экземпляра кэша используйте функцию Cacher, передавая интервал очистки в наносекундах.

Если требуется указать интервал в секундах/минутах/часах и т.д. - используйте множители из пакета time:

cache := candycache.Cacher(10 * time.Minute) // Очистка каждые 10 минут

Без автоматической очистки

Если автоматичская очистка не нужна - просто передайте параметром любое отрицательное число:

cache := candycache.Cacher(-1) // Кэш не будет очищаться автоматически

Добавление элемента

Для добавления элемента в кэш используйте метод Add:

cache.Add("key", "value", 5 * time.Minute) // Элемент будет считаться устаревшим через 5 минут

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

Получение элемента

Для получения элемента из кэша используйте метод Get:

value, found := cache.Get("key") // Получение значения по ключу "key"

Если элемент найден, то в переменную value будет записано значение, а в found - true. Если элемент не найден, то в found будет записано false, а значением вернется nil.

Удаление элемента

Для удаления элемента по ключу используйте метод Delete:

err := cache.Delete("key1")
if err != nil {
    fmt.Println("Ошибка:", err) // Не найдено записи по ключу
}

Элемент будет удален, не смотря на то, устаревший он или нет.

Массовое удаление элементов

Удаление устаревших элементов

Для удаления устаревших элементов используйте метод Cleanup:

cache.Cleanup() // Перебирает все элементы кэша, удаляет устаревшие

Удаление всех элементво кэша

Для полной очистки кэша используйте метод Flush:

cache.Flush() // Удаляет все элементы кэша, не смотря на то, устаревшие они или нет