redisson-spring-boot-starter
В настоящее время многие проекты всё ещё используют setNx
из jedis в качестве распределённой блокировки, однако эта блокировка имеет проблемы. Redisson — это единственная реализация java-поддержки redis redlock. После интеграции с этим проектом требуется лишь небольшая настройка для использования всех функций redisson. В настоящее время поддерживаются:
Поддерживаются режимы блокировки:
2024-04-15
Добавление локального кэша на основе JVM значительно снижает сетевые издержки.
@Autowired
private RedissonObjectLocalCache redissonObjectLocalCache;
@Autowired
private RedissonCollectionLocalCache redissonCollectionLocalCache;
Другие обновления доступны по ссылке readme/up.md.
Redisson в настоящее время является единственной официальной рекомендацией для Java-версии распределённой блокировки. Он поддерживает redlock. Подробнее см. в официальной документации (https://redis.io/topics/distlock).
В настоящее время jedis поддерживает только одиночные машины.
Jedis setNx и установка времени истечения срока действия не синхронизированы, что может привести к тупиковой ситуации в некоторых экстремальных случаях, вызывая сбой программы. Если значение не установлено, поток 1 может освободить блокировку потока 2.
.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>
# Режим одного узла Redis
redisson.singleServerConfig.address=127.0.0.1:6379
- Как использовать распределённую блокировку?
Добавьте аннотацию @Lock
к методу. См. описание параметров блокировки в readme/lock.md:
//1. Поддержка spel-выражения, keyConstant — константа (необязательно)
@Lock(keys = "#user.name",keyConstant = "常量"))
public String test(User user) {
System.out.println("进来了test");
return "test";
}
- Как хранить данные?
@Autowired
private RedissonObject redissonObject;
@Autowired
private RedissonCollectionLocalCache redissonCollectionLocalCache;
@Autowired
private RedissonBinary redissonBinary;
@Autowired
private RedissonBinary redissonBinary;
@Autowired
private RedissonCollection redissonCollection;
@Autowired
private RedissonCollectionCache redissonCollectionCache;
- Как настроить сеанс кластера?
Просто добавьте аннотацию @EnableRedissonHttpSession
в класс запуска.
@Autowired
private RedissonClient redissonClient;
Добавьте
@EnableCache(value = {"cache1","cache2"})
в класс запуска, а @Cacheable,@CachePut,@CacheEvict должны быть включены в value.
Очень просто в использовании. Требуется всего две аннотации для завершения операции.
Сообщения делятся на производителей и потребителей. Производители создают сообщения, которые потребляют потребители [см. подробный пример в 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;
}
Конфигурация потребителя:
Добавьте аннотацию @EnableMQ
в класс запуска для включения потребителя.
Используйте аннотацию @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);
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )