Redisson简单介绍
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。
其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service) Redisson提供了使用Redis的最简单和最便捷的方法。
Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。
快速入门
1.引入Redisson依赖
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.13.6</version>
</dependency>
2.创建Redisson配置类
@Configuration
public class RedissonConfig {
@Bean
public RedissonClient redissonClient(){
//配置
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379")
.setPassword("123456");
//创建Redisson对象
return Redisson.create(config);
}
}
3.使用Redisson操作分布式锁
// 获得一个Redisson分布式锁的实例
RLock redissonClientLock = redissonClient.getLock("lock:order:" + userId);
// 尝试获取锁
boolean success = redissonClientLock.tryLock();
// 如果没拿到锁,说明已经有其他线程在创建订单了
if (!success) {
log.info("没有拿到分布式锁!");
return Result.fail("请勿重复下单");
}
log.info("已经拿到分布式锁!");
// 创建订单
try {
// 获取代理对象(事务)
IVoucherOrderService proxy = (IVoucherOrderService) AopContext.currentProxy();
// 创建订单
return proxy.createVoucherOrder(voucherId);
} finally {
// 释放锁
redissonClientLock.unlock();
}