Слияние кода завершено, страница обновится автоматически
распределенный кэш, работающий в проекте
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 )