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

OSCHINA-MIRROR/gouliang-dtguai-cache

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

dtguai-cache

На основе аннотаций Spring Boot реализуется кэширование. Клиент использует lettuce.

@Cache — облегчённое кэширование, поддерживает настройку времени истечения срока действия для отдельного кэша и позволяет удалять кэш по префиксу.

Используется fastjson для сериализации и десериализации, данные хранятся в кэше в виде json-строки.

Может быть быстро использован в повседневных приложениях Spring Boot.

Руководство по использованию

Maven-зависимости

    <dependency>
        <groupId>com.dtguai</groupId>
        <artifactId>dtguai-cache</artifactId>
        <version>1.0.3</version>
    </dependency>

Конфигурация кэша

  1. Настройка источника данных Redis, файл application.yml:
#redis-cache 相关
spring:
  redis:
    database: 9
    host: 192.168.14.108
    port: 6379
    # password:
    #    cluster:
    #      nodes:
    #        - 127.0.0.1:6379
    #        - 127.0.0.1:6380
    #        - 127.0.0.1:6381
    #        - 127.0.0.1:6382
    lettuce:
      pool:
        # 连接池最大连接数 默认8 ,负数表示没有限制
        max-active: 32
        # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认-1
        max-wait: -1
        # 连接池中的最大空闲连接 默认8
        max-idle: 8
        # 连接池中的最小空闲连接 默认0
        min-idle: 0
    timeout: 3000

Включение кэша

  1. Включить сканирование AOP:
В классе запуска Spring Boot добавьте @EnableDtguaiCache

Использование кэша

  1. В сервисе используйте аннотации @Cache или @CacheClear.

Описание аннотаций

Настройка кэша: @Cache

Параметр аннотации Тип Описание
key Строка Выражение для динамического вычисления ключа кэша
expires Целое число Срок действия кэша в минутах, по умолчанию 10 минут
parser Class<? extends ICacheResultParser> Класс для пользовательской обработки возвращаемого результата кэша
generator Class<? extends IKeyGenerator> Класс для генерации пользовательских ключей кэша

Очистка кэша: @CacheClear

Параметр аннотации Тип Описание
pre Строка Очистить кэш с определённым префиксом ключа, например: pre = "1*" или pre = {"1*","2","3*"}
key Строка Удалить определённый ключ кэша, например: key = "1" или key = {"1","2","3"}
generator Class<? extends IKeyGenerator> Класс для генерации пользовательских ключей кэша

Объяснение выражения для создания ключа по умолчанию

Пример выражения Описание Пример
@Cache(key="user:{1}")
public User getUserByAccount(String account)
{1} представляет первый параметр
{2} представляет второй параметр и т.д.
Если account = ace, то key = user:ace
@CacheClear(pre="user:{1.account}")
User saveOrUpdate(User user)
{1} представляет первый параметр
{1.xx} представляет атрибут xx первого параметра
Если account=ace, то key = user:ace

Демо

  1. В src/main/test развёрнуты соответствующие примеры кода.

CacheTest — основной класс запуска. service — пакет, содержащий примеры использования пользовательских выражений и результатов анализа, а также аннотаций.

Часто задаваемые вопросы

Если в классе используется redisTemplate:

 @Autowired
 private RedisTemplate<String, String> redisTemplate;

Демонстрация основных операций: конкретные параметры см. в тестовом классе.

@Override
    @Cache(key = "user:{1}")
    public User get(String account) {
        log.warn("Из метода get...");
        return new User("太子", 42, account);
    }

    @Override
    @Cache(key = "user:list")
    public List<User> getList() {
        log.warn("Из метода getLlist...");
        List<User> users = new ArrayList<>(20);
        for (int i = 0; i < 20; i++) {
            User user = new User("陈雄", i, "cx911");
            users.add(user);
        }
        return users;
    }

    @Override
    @Cache(key = "user:set", parser = SetCacheResultParser.class)
    public Set<User> getSet() {
        log.warn("Из метода getSet...");
        Set<User> users = new HashSet<>(20);
        for (int i = 0; i < 20; i++) {
            User user = new User("陈雄", i, "cx911");
            users.add(user);
        }
        return users;
    }

    @Override
    @Cache(key = "user:map:{1.age}:{2.age}:{3.name}")
    public Map<String, User> getMap(Map<String, Object> m, List l, User u) {
        log.warn("Из метода...");
        Map<String, User> users = new HashMap<>(40);
        for (int i = 0; i < 20; i++) {
            User user = new User("陈雄", i, "cx911");
            users.put(user.getAccount() + i, user);
        }
        return users;
    }

    @Override
    //@CacheClear(key = "user:{1.age}:{1.name}:{1.account}", pre = "user", keys = "1,2,3,4")
    //@CacheClear( pre = "user:map:{1.age},2,3", keys = "1,2,3,4")
    @CacheClear(key = "1", pre = "2*")
    public void save(User user) {

    }

    /**
     * Обработка результатов карты
     */
    public static class UserMapCacheResultParser implements CacheResultParser<HashMap<String, User>> {
        @Override
        public HashMap<String,
``` ```
parse(String value, Type returnType) {
    return JSON.parseObject(value, returnType);
}

/

  • 对set返回结果做处理 */ public static class SetCacheResultParser implements CacheResultParser<HashSet> { @Override public HashSet parse(String value, Type returnType) { return JSON.parseObject(value, new TypeReference<HashSet>() { }); } }

感谢

感谢作者:The Sun

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

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

Введение

Кэширование на основе аннотаций Spring Boot. Клиент использует Lettuce. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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