回答
Redisson 是一个在 Redis 的基础上实现的 Java 内存数据网格 (In-Memory Data Grid)。它扩展了 Redis 的功能,提供了许多分布式数据结构和服务,其中包括分布式锁。Redisson 支持的分布式锁有:可重入锁(Reentrant Lock)、公平锁(Fair Lock)、联锁(MultiLock)、红锁(RedLock)、读写锁(ReadWriteLock)。它简化了我们获取分布式锁的逻辑。
Redisson 实现分布式锁的底层原理是基于 Redis 的 SETNX
命令和 Lua 脚本来保证操作的原子性。
扩展
Redisson 是什么
Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还实现了可重入锁(Reentrant Lock)、公平锁(Fair Lock)、联锁(MultiLock)、红锁(RedLock)、读写锁(ReadWriteLock)等,还提供了许多分布式服务。
Redisson 的宗旨是促进使用者对 Redis 的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上,为每个试图再造分布式轮子的程序员带来了大部分分布式问题的解决办法。
通俗点来讲,Redisson 就是在 Redis 基础上实现的分布式工具集合。
功能特性:
- 支持 Redis 单节点(single)模式、哨兵(sentinel)模式、主从(Master/Slave)模式以及集群(Redis Cluster)模式
- 程序接口调用方式采用异步执行和异步流执行两种方式。
- 数据序列化,Redisson 的对象编码类是用于将对象进行序列化和反序列化,以实现对该对象在 Redis 里的读取和存储。
- 单个集合数据分片,在集群模式下,Redisson 为单个 Redis 集合类型提供了自动分片的功能。
- 提供多种分布式对象,如:
Object Bucket
,Bitset
,AtomicLong
,Bloom Filter
和HyperLogLog
等。 - 提供丰富的分布式集合,如:Map,Multimap,Set,SortedSet,List,Deque,Queue等。
- 分布式锁和同步器的实现,可重入锁(Reentrant Lock),公平锁(Fair Lock),联锁(MultiLock),红锁(Red Lock),信号量(Semaphore),可过期性信号锁(PermitExpirableSemaphore)等。
- 提供先进的分布式服务,如分布式远程服务(Remote Service),分布式实时对象(Live Object)服务,分布式执行服务(Executor Service),分布式调度任务服务(Schedule Service)和分布式映射归纳服务(MapReduce)。
Github 地址:https://github.com/redisson/redisson/
Redisson 使用
客户端模式
- 引入依赖
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.27.2</version>
</dependency>
- 获取
RedissonClient
。RedissonClient
有多种模式,主要的模式有:- 单节点模式
- 哨兵模式
- 主从模式
- 集群模式
单节点模式
程序化配置方法:
// 默认连接地址 127.0.0.1:6379
RedissonClient redisson = Redisson.create();
Config config = new Config();
config.useSingleServer().setAddress("myredisserver:6379");
RedissonClient redisson = Redisson.create(config);
配置参数: