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

OSCHINA-MIRROR/wuyan94zl-go-cache

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

go-cache


распределенный кэш, работающий в проекте


Установка

go get github.com/wuyan94zl/go-cache

Пример инициализации

    // Импортирование пакета кэша
    import "github.com/wuyan94zl/go-cache"

    // Инициализация одиночной версии кэша
    cache.Default(nil)

    // Инициализация распределенной версии кэша
    cache.Default(&cache.Config{
        MaxLen:         100000, // Длина кэша по умолчанию 100000
        BackupInterval: 1,      // Интервал времени для резервного копирования кэша 1 минута (по умолчанию 60 минут), резервные копии сохраняются в директории db, при запуске или перезапуске они автоматически синхронизируются с основным кэшем
        // Конфигурация распределенного кэша на основе gRPC
        Grpc: &cache.GrpcConfig{
            Port:        "8888",                                       // Порт прослушивания текущего сервиса
            CurrentHost: "localhost:8888",                             // Адрес gRPC текущего сервиса
            AllHosts:    []string{"localhost:8811", "localhost:8821"}, // Все адреса gRPC сервисов, требуется ручная конфигурация
        },
    })

    // Операции использования

    // Установка ключа test со значением value, сроком действия 60 секунд
    cache.Instance.Set("test", "value", 60)

    // Получение значения ключа test
    cache.Instance.Get("test")

    // Установка ключа test_nx со значением value, сроком действия 60 секунд, если ключ уже существует, операция не выполняется
    cache.Instance.SetNX("test_nx", "value", 60)
```    // Получение значения ключа cache_key, если ключ отсутствует, вызывается функция обратного вызова f(), чтобы получить данные и установить кэш. Если ключ существует, значение сразу возвращается, функция обратного вызова не вызывается
    var f cache.CallBack = cache.CallBackFunc(func(key string, params map[string]interface{}) ([]byte, error) {
        return json.Marshal("кэш данных записи")
    })
    // Параметры функции обратного вызова соответствуют параметрам функции Cache key,map[string]interface{}{}
    cache.Instance.CallBackFunc(f).Cache("cache_key", map[string]interface{}{}, 600)
```### Использование в проекте

#### Одиночная версия

[Пример одиночной версии](/example/single.go)

#### Распределенная версия

[Пример распределенной версии 1](/example/cluster1.go)

[Пример распределенной версии 2](/example/cluster2.go)

[Пример распределенной версии 3](/example/cluster3.go)

Три примера отличаются только портами `rpcPort, httpPort := "8811", ":8810"`
Необходимо обеспечить согласованность списка AllHosts и включить информацию обо всех узлах кэша

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

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

Введение

Распределённый кэш, работающий в проекте. Развернуть Свернуть
Go
MIT
Отмена

Обновления

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

Участники

все

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

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