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

OSCHINA-MIRROR/ztp-redisson-spring-boot-starter

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 12:54 9c8157d

redisson-spring-boot-starter

В настоящее время многие проекты всё ещё используют setNx из jedis в качестве распределённой блокировки, однако эта блокировка имеет проблемы. Redisson — это единственная реализация java-поддержки redis redlock. После интеграции с этим проектом требуется лишь небольшая настройка для использования всех функций redisson. В настоящее время поддерживаются:

  • кластерный режим;
  • облачный режим;
  • режим одного узла Redis;
  • режим дозорного;
  • ведущий-ведомый режим.

Поддерживаются режимы блокировки:

  • повторная блокировка;
  • справедливая блокировка;
  • взаимная блокировка;
  • красная блокировка;
  • блокировка чтения-записи.

Журнал обновлений

2024-04-15

Добавление локального кэша на основе JVM значительно снижает сетевые издержки.

    @Autowired
    private RedissonObjectLocalCache redissonObjectLocalCache;
    @Autowired
    private RedissonCollectionLocalCache redissonCollectionLocalCache;

Другие обновления доступны по ссылке readme/up.md.

Введение

  1. Почему нам нужен redisson?

Redisson в настоящее время является единственной официальной рекомендацией для Java-версии распределённой блокировки. Он поддерживает redlock. Подробнее см. в официальной документации (https://redis.io/topics/distlock).

  1. Почему у jedis есть проблемы?

В настоящее время jedis поддерживает только одиночные машины.

Jedis setNx и установка времени истечения срока действия не синхронизированы, что может привести к тупиковой ситуации в некоторых экстремальных случаях, вызывая сбой программы. Если значение не установлено, поток 1 может освободить блокировку потока 2.

Архитектура программного обеспечения

  1. redisson (https://github.com/redisson/redisson)
  2. spring boot.

Инструкция по установке

.1. Импортируйте в pom.xml:

<dependency>
    <groupId>com.zengtengpeng</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>1.0.18</version>
</dependency>

Если используется spring3X:

<dependency>
    <groupId>com.zengtengpeng</zg>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>3.1.4</version>
</dependency>
  1. Добавьте в application.properties:
# Режим одного узла Redis
redisson.singleServerConfig.address=127.0.0.1:6379

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


  1. Как использовать распределённую блокировку?

Добавьте аннотацию @Lock к методу. См. описание параметров блокировки в readme/lock.md:

//1. Поддержка spel-выражения, keyConstant — константа (необязательно)
@Lock(keys = "#user.name",keyConstant = "常量"))
public String test(User user) {
    System.out.println("进来了test");
    return "test";
}

  1. Как хранить данные?
  1. RedissonObject — это общий шаблон, любой объект может существовать здесь. Просто внедрите объект в контейнер Spring. См. пример в readme/object.md:
    @Autowired
    private RedissonObject redissonObject;
  1. RedissonCollectionLocalCache по сравнению с RedissonCollection добавляет локальный кэш на основе jvm. Это значительно снижает сетевой трафик. См. пример в readme/collection.md:
    @Autowired
    private RedissonCollectionLocalCache redissonCollectionLocalCache;
  1. RedissonObjectLocalCache по сравнению с RedissonObject добавляет локальный кэш на основе jvm. Это значительно снижает сетевой трафик. См. пример в readme/binary.md:
    @Autowired
    private RedissonBinary redissonBinary;
  1. RedissonBinary — этот шаблон предназначен для хранения двоичных данных. Можно хранить файлы изображений в виде двоичных файлов. Внедрите объект в контейнер Spring, чтобы использовать его. См. пример в readme/binary.md:
    @Autowired
    private RedissonBinary redissonBinary;
  1. RedissonCollection — этот шаблон представляет собой коллекцию. Можно сохранять элементы типа Map, List, Set. Внедрите объект в контейнер Spring, чтобы использовать его. См. пример в readme/collection.md:
    @Autowired
    private RedissonCollection redissonCollection;
  1. RedissonCollectionCache — эта коллекция аналогична предыдущей, но добавляет механизм удаления отдельных элементов. См. WIKI (https://github.com/redisson/redisson/wiki/7.-%E5%88%86%E5%B8%83%E5%BC%8F%E9%9B%86%E5%90%88#711-%E6%98%A0%E5%B0%84map%E7%9A%84%E5%85%83%E7%B4%A0%E6%B7%98%E6%B1%B0eviction%E6%9C%AC%E5%9C%B0%E7%BC%93%E5%AD%98localcache%E5%92%8C%E6%95%B0%E6%8D%AE%E5%88%86%E7%89%87sharding):
    @Autowired
    private RedissonCollectionCache redissonCollectionCache;

  1. Как настроить сеанс кластера?

Просто добавьте аннотацию @EnableRedissonHttpSession в класс запуска.

Продвинутое использование


1. Как реализовать пользовательские операции с помощью клиента redisson, просто внедрить клиент redisson в контейнер spring:

    @Autowired
    private RedissonClient redissonClient;

2. Как интегрировать spring cache [см. подробный пример в readme/cache.md]

Добавьте @EnableCache(value = {"cache1","cache2"}) в класс запуска, а @Cacheable,@CachePut,@CacheEvict должны быть включены в value.


3. Как использовать очередь сообщений MQ.

Очень просто в использовании. Требуется всего две аннотации для завершения операции.

Сообщения делятся на производителей и потребителей. Производители создают сообщения, которые потребляют потребители [см. подробный пример в readme/mq.md]:

Конфигурация производителя, есть два режима отправки сообщений, выберите один из них:

1.Режим кода:

RTopic testMq = redissonClient.getTopic("testMq");
User message = new User();
message.setAge("12");
message.setName("的身份为");
testMq.publish(message);

2.Режим аннотаций:

@RequestMapping("testMq1")
@ResponseBody
@MQPublish(name = "test")
public User testMq1(){
    User user=new User();
    user.setName("garegarg");
    user.setAge("123");
    return user;
}

Конфигурация потребителя:

  1. Добавьте аннотацию @EnableMQ в класс запуска для включения потребителя.

  2. Используйте аннотацию @MQListener(name = "testMq") для настройки потребителя:

@MQListener(name = "testMq")
public void test1(CharSequence charSequence,User o,Object object){
    System.out.println("charSequence="+charSequence);
    System.out.println("收到消息2"+o);
}

4. Конфигурация кластерного режима (также можно использовать yml-формат) [см. ссылку в readme/mode.md]


5. Список свойств (разделенный на общие параметры, параметры одноэлементного режима, параметры кластерного режима) Ссылка на адрес

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/ztp-redisson-spring-boot-starter.git
git@api.gitlife.ru:oschina-mirror/ztp-redisson-spring-boot-starter.git
oschina-mirror
ztp-redisson-spring-boot-starter
ztp-redisson-spring-boot-starter
master