1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/aesoper-cache

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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

История разработки

В процессе разработки проектов часто используются такие драйверы кэша, как Redis, Memcache и Memory. Если вы новичок, то вам придётся потратить время на изучение различных документов, а затем написать код для каждого типа кэша. Кроме того, конфигурация и API для каждого типа сильно отличаются, что может вызывать головную боль. Поэтому возникла идея создать унифицированный и расширяемый драйвер кэша. Вдохновением послужила разработка драйвера базы данных SQL/Databases в Golang. Так появился этот проект.

Характеристики

  • Настраиваемый.
  • Расширяемый.

Поддерживаемые драйверы кэша на данный момент

  • Redis.
  • Memcache.
  • Memory.

Интерфейс расширения

Cache interface {
    Get(key string) ([]byte, error)
    Put(key string, val interface{}, timeout time.Duration) error
    Delete(key string) error
    Incr(key string) error
    Decr(key string) error
    IsExist(key string) bool
    ClearAll() error
    StartAndConfigure(ops ...CacheOption) error
    Close() error
}

Если вы считаете, что предоставляемые драйверы Redis и Memcache не соответствуют вашим требованиям, вы можете написать свой собственный драйвер кэша в соответствии с этим интерфейсом, зарегистрировать его на фабрике и использовать.

func init() {
	factory.Register("redis", NewRedisCache)
}

Как использовать

Прежде всего, конечно, необходимо скачать код.

go get -u gitee.com/aesoper/cache

Первый способ

	cache, err := factory.NewCache("memcache")
	if err != nil {
		return
	}

	cache.Put("test", "111", time.Minute*5)
	cache.Put("test2", "2222", time.Minute*5)

Второй способ

	c, err := cache.New(Cfg{
		Driver: "redis",
		Redis: redis.Options{
			Addr: "localhost:6379",
		},
	})
	if err != nil {
		return
	}

	c.Put("test", "111", time.Minute*5)

Примечание

  1. При использовании memory рекомендуется использовать пакет encoding/gob при декодировании возвращаемого []byte из Get, иначе могут возникнуть проблемы с кодировкой.

Зависимости для разработки от сторонних библиотек

  1. Библиотека Redis https://github.com/go-redis/redis.
  2. Библиотека Memcache https://github.com/bradfitz/gomemcache.
  3. Библиотека тестирования https://github.com/stretchr/testify.
  4. Библиотека Memory https://github.com/patrickmn/go-cache.

Участие в разработке

  1. Fork этого репозитория.
  2. Создайте ветку Feat_xxx.
  3. Отправьте код.
  4. Создайте Pull Request.

Особенности использования Code Cloud

  1. Используйте Readme_XXX.md для поддержки разных языков, например Readme_en.md, Readme_zh.md.
  2. Официальный блог Code Cloud blog.gitee.com.
  3. Вы можете https://gitee.com/explore узнать об отличных проектах с открытым исходным кодом на Code Cloud.
  4. GVP (Go Value Project) — это список наиболее ценных проектов с открытым исходным кодом на Code Cloud, отобранных на основе всесторонней оценки.
  5. Официальное руководство по использованию Code Cloud https://gitee.com/help.
  6. Лица Code Cloud — это серия, демонстрирующая стиль членов Code Cloud https://gitee.com/gitee-stars/.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Были инкапсулированы базовые функции кэширования Redis и Memcache, что позволяет быстро переключать способ кэширования путём изменения одной несложной конфигурации без необходимости писать дополнительный код. Предоставлен расширяемый интерфейс, позволяющий разработчикам расширять другие типы кэширования, такие как кэширование в памяти. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/aesoper-cache.git
git@api.gitlife.ru:oschina-mirror/aesoper-cache.git
oschina-mirror
aesoper-cache
aesoper-cache
master