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

OSCHINA-MIRROR/MiMose-redisson-spring-boot-component

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

REDISSON-SPRING-BOOT-COMPONENT

redisson компонент

1. Распределённая блокировка

  1. Включите этот компонент в проект pom:
<properties>
    <component.redisson.version>1.0.0</component.redisson.version>
</properties>
<dependencies>
    <dependency>
        <groupId>com.mimose.component</groupId>
        <artifactId>redisson-spring-boot-component</artifactId>
        <version>${component.redisson.version}</version>
    </dependency>
</dependencies>
  1. Добавьте свойства в конфигурационный файл проекта:
## Одноузловой режим
redisson.base.address=redis://127.0.0.1:6379
redisson.base.password=123456

## Режим дозорного
redisson.base.master-name=mymaster
redisson.base.password=xxxx
redisson.base.sentinel-addresses=redis://127.0.0.1:26379,redis://127.0.0.1:26380,redis://127.0.0.1:26381
  1. В месте, где требуется добавить блокировку, вызовите LockUtil для блокировки (с поддержкой тайм-аута), а затем используйте unlock для снятия блокировки:
// LockKeyEnum — это перечисление для идентификации блокировок, которое используется для управления распределёнными блокировками на основе ключа.
Lock lock = LockUtil.lock(LockKeyEnum.xxx.getName());
try{
    // dosomething
}catch(final Exception e){
    // excpetion
}finally{
    lock.unlock();
}
  1. В скрипте запуска проекта добавьте -Dredisson.open=true:
java -jar -Dredisson.open=true -Dspring.profiles.active=dtest -Dserver.port=8080 target/xxx.jar
Если вы хотите поддерживать совместимость с обычными ReentrantLock механизмами, выполните следующие шаги:
  1. Используйте перечисление в проекте для определения ключей блокировок и реализуйте интерфейс DefaultLockKey из redisson компонента, чтобы вернуть значение ключа:
public enum LockKeyEnum implements DefaultLockKey {
    /**Предварительная блокировка**/
    REG_LOCK,
    /**Отмена блокировки**/
    CANCEL_LOCK;

    @Override
    public String getName() {
        return this.name();
    }
}
  1. При блокировке используйте это перечисление для установки значения ключа:
Lock lock = LockUtil.lock(LockKeyEnum.REG_LOCK.getName());
xxxxx
  1. Инициализируйте это перечисление в компоненте: 3.1. В конфигурационном файле проекта добавьте параметр конфигурации (для одноузлового приложения):
## redisson lock key package url
redisson.lock.enumPackUrl=com.xx.xx..emuns

3.2. Если проект не является одноузловым приложением, чтобы избежать необходимости изменения конфигурационного файла в каждом проекте, можно добавить файл конфигурации по умолчанию для ссылок на код в общем проекте ресурсов: redisson-default-lock.yml:

redisson.lock.enumPackUrl: com.xx.xx.emuns

Например, если xx-server разделён на xx-web и xx-api, которые ссылаются на общий jar-файл xx.jar, то в ресурсах xx.jar можно добавить этот конфигурационный файл, и тогда web и api проекты не потребуют изменения конфигурационных файлов. 3.3. Если вы не хотите добавлять конфигурацию, вы можете использовать правило именования для перечисления, чтобы оно было инициализировано. Правило заключается в том, что имя класса содержит LockKey. Например, здесь используется перечисление LockKeyEnum, которое содержит LockKey, поэтому оно будет инициализироваться.

2. Распределённое кэширование

  1. Включите компонент в pom проекта:
<properties>
  <component.redisson.version>1.0.0</component.redisson.version>
</properties>
<dependencies>
  <dependency>
      <groupId>com.mimose.component</groupId>
      <artifactId>redisson-spring-boot-component</artifactId>
      <version>${component.redisson.version}</version>
  </dependency>
</dependencies>
  1. Создайте файл конфигурации кэша:

redisson-cache.yml:

# cache key
testCache1:
  # Время истечения срока действия в мс
  ttl: 300000
  # Максимальное время простоя в мс
  maxIdleTime: 300000

testCache2:
  ttl: 300000
  maxIdleTime: 300000

По умолчанию используется файл redisson-cache.yml в папке resource, но если у вас есть другая конфигурация, вам нужно указать её в файле конфигурации проекта, например:

redisson.cache.config=classpath:mycache.yml
  1. Для использования кэша в нужном месте используйте аннотации spring:
@Cacheable
@CacheEvict
...
  1. В сценарии запуска проекта добавьте -Dredisson.open=true:
java -jar -Dredisson.open=true -Dspring.profiles.active=dtest -Dserver.port=8080 target/xx.jar
TIP:

Если вы включили redisson-spring-boot-component, но не запустили redisson, т. е. не установили redisson.open или установили redisson.open=false, то:

  1. Распределённые блокировки не будут работать, и вместо этого будут использоваться реализации интерфейса DefaultLockKey для создания обычных блокировок Java.
  2. RedissonCache не будет работать, и вам придётся реализовать свой собственный кэш, например, интегрировать ehcache.
Параметр Описание Значение по умолчанию Примечание
address Адрес подключения к redis Работает в одноузловом режиме
password Пароль подключения к redis Работает в одноузловом и дозорном режимах, без пароля не устанавливается
database Номер базы данных 0
timeout Время ожидания команды, в миллисекундах 5000 Работает в одноузловом и дозорном режимах
connectionTimeout Время ожидания соединения, в миллисекундах 5000 Работает в одноузловом и дозорном режимах
connectionPoolSize Размер пула соединений 250 Работает в одноузловом режиме
connectionMinimumIdleSize Минимальное количество свободных соединений 20 Работает в одноузловом режиме
masterName Имя главного узла Работает в дозорном режиме
sentinelAddresses Адреса дозорных узлов Работает в дозорном режиме, несколько адресов разделяются запятыми
masterConnectionPoolSize Размер пула соединений главного узла 400 Работает в дозорном режиме
slaveConnectionPoolSize Размер пула соединений подчинённых узлов 400 Работает в дозорном режиме

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

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

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