Redis-Cache
Это простой кэш на основе сервиса Redis, который позволяет реализовать распределённое кэширование.
Redis-Cache использует клиент Jedis для доступа к сервису Redis и предлагает два режима работы:
Примечание: если вы хотите использовать все функции Redis, рекомендуется выбрать фреймворк Spring-data-redis.
Redis-Cache зависит только от клиента Jedis и использует String для всех ключей кэша. Генерация ключей и сериализация значений настраиваются.
[cacheName][:][key]
, где cacheName
— имя кэша, :
— разделитель, а key
— ключ кэша. Интерфейс для генерации ключей: secondriver.redis.cache.key.CacheKeyGenerator
.secondriver.redis.cache.serializer.CacheValueSerializer
.Каждый объект Cache представляет класс кэшированных элементов (key-value пар). Интерфейс Cache secondriver.redis.cache.Cache
предоставляет методы для добавления, получения, удаления и очистки элементов кэша (не поддерживается в кластерном режиме).
В режимах Normal и Sentinel используются следующие конкретные реализации интерфейса Cache:
secondriver.redis.cache.impl.JedisCache/RedisCache
.secondriver.redis.cache.impl.JedisCache/RedisCache
.Обе реализации зависят от интерфейсов secondriver.redis.cache.core.JedisSupply/RedisSupply
.
Интерфейс CacheManger используется для централизованного управления объектами Cache, каждый из которых имеет уникальное глобальное имя. Реализация интерфейса: secondriver.redis.cache.impl.RedisCacheManager
.
Источник данных Redis — это объект, управляющий соединениями с сервером Redis. Он реализован классом secondriver.redis.cache.core.RedisDataSource
, который создаёт пулы соединений для разных режимов работы.
Конфигурация Redis-Cache определяется классом secondriver.redis.cache.confg.Configure
и его подклассами для разных режимов. Пример конфигурации:
#common
password=
#value is [0-(databases-1)), databases from redis server config
database=0
timeout=1500
#If Normal mode, but have multi address please use * as prefix in using address
address=192.168.88.153:26379;192.168.88.153:26380;192.168.88.153:26382
#Normal
clientName=myclient
#Sentinel
masterName=mymaster
#pool
pool.maxTotal=8
pool.maxIdle=8
pool.minIdle=1
Пример использования конфигурации для режима Sentinel:
//Step1: 读取配置文件
Properties properties = Configure.readInputStream(ClassLoader.getSystemResourceAsStream("redis.properties"));
//Step2: 根据配置文件生成 специфический объект конфигурации
SentinelConfigure configure = new SentinelConfigure(properties);
//Step3: Создать пул соединений или диспетчер для конкретного режима
JedisSupply supply = RedisDataSource.initialJedisSentinelPoolSupply(configure);
//Эквивалентно:= new JedisSentinelPoolSupply(configure);
//Step4: Создать объект управления кэшем
CacheManager cacheManager = new RedisCacheManager();
//Step5: Создать кэш для указанного режима
Cache cache = new JedisCache("demo", supply);
//Step6: Добавить кэш в объект управления
cacheManager.addCache(cache);
//Step7: Получить кэш
Cache use = cacheManager.getCache("demo");
//Step8: Кэшировать данные
use.put("a1", "a1");
use.put("a2", "a2", 10000);
Optional<Object> a1 = use.get("a1");
a1.ifPresent(o->{
System.out.println("a1=" + o);
});
Optional<Object> a2 = use.get("a2");//Может быть null
a2.ifPresent(o -> {
System.out.println("a2=" + o);
});
use.evict("a1");
use.clear();
//Step9: Удалить кэш
cacheManager.removeCache(cache);
//Step10: Закрыть пул соединений или диспетчер
supply.closeJedisSupply();
Использование RedisCache немного отличается:
//Шаг 3: создать пул соединений или менеджер для конкретного режима
RedisSupply supply = new RedisSentinelPoolSupply(configure);
//Шаг 5: создать кэш для указанного режима
Cache cache = new RedisCache("demo", supply);
//Шаг 10: закрыть пул соединений или диспетчер
supply.closeRedisSupply();
Этот раздел написан с использованием JDK 8 и предлагает два способа использования сервиса Redis для создания кэша: Normal и Sentinel.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )