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

OSCHINA-MIRROR/secondriver-redis-cache

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

Redis-Cache

Это простой кэш на основе сервиса Redis, который позволяет реализовать распределённое кэширование.

1. Режимы работы Redis-Cache:

Redis-Cache использует клиент Jedis для доступа к сервису Redis и предлагает два режима работы:

  • Normal (нормальный) — с одним экземпляром Redis;
  • Sentinel — с использованием сервиса Sentinel от Redis для обеспечения репликации главный-подчиненный и разделения чтения и записи. Не нужно заботиться о количестве экземпляров Redis, достаточно взаимодействовать со службой Sentinel.

Примечание: если вы хотите использовать все функции Redis, рекомендуется выбрать фреймворк Spring-data-redis.

2. Стратегия key-value в Redis-Cache:

Redis-Cache зависит только от клиента Jedis и использует String для всех ключей кэша. Генерация ключей и сериализация значений настраиваются.

  • По умолчанию ключи генерируются по схеме [cacheName][:][key], где cacheName — имя кэша, : — разделитель, а key — ключ кэша. Интерфейс для генерации ключей: secondriver.redis.cache.key.CacheKeyGenerator.
  • Значения сериализуются с помощью fastjson. Интерфейс для сериализации значений: secondriver.redis.cache.serializer.CacheValueSerializer.

3. Интерфейсы Cache в Redis-Cache:

Каждый объект Cache представляет класс кэшированных элементов (key-value пар). Интерфейс Cache secondriver.redis.cache.Cache предоставляет методы для добавления, получения, удаления и очистки элементов кэша (не поддерживается в кластерном режиме).

В режимах Normal и Sentinel используются следующие конкретные реализации интерфейса Cache:

  • В режиме Normal: secondriver.redis.cache.impl.JedisCache/RedisCache.
  • В режиме Sentinel: secondriver.redis.cache.impl.JedisCache/RedisCache.

Обе реализации зависят от интерфейсов secondriver.redis.cache.core.JedisSupply/RedisSupply.

4. Интерфейс CacheManager в Redis-Cache:

Интерфейс CacheManger используется для централизованного управления объектами Cache, каждый из которых имеет уникальное глобальное имя. Реализация интерфейса: secondriver.redis.cache.impl.RedisCacheManager.

5. Источник данных Redis:

Источник данных Redis — это объект, управляющий соединениями с сервером Redis. Он реализован классом secondriver.redis.cache.core.RedisDataSource, который создаёт пулы соединений для разных режимов работы.

6. Конфигурация Redis-Cache:

Конфигурация 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

7. Простое приложение:

Пример использования конфигурации для режима 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();

8. Заключение:

Этот раздел написан с использованием JDK 8 и предлагает два способа использования сервиса Redis для создания кэша: Normal и Sentinel.

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

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

Введение

Spring-data-redis уже реализует кэш с сервером Redis, но redis-cache — это другое. Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

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