使用Redis创建分布式Java应用程序
Redisson能为你的Java应用提供一个内存中的分布式数据网格。几乎每个Java多线程应用程序都使用java.util和java.util.concurrent包中的类。因此,如果我们有等效的相应类的分布式实现,那么扩展应用程序就会更容易。
Redison 是一个基于Redis的Java内存数据网格。它提供了分布式应用程序所需的最重要的Java类的实现。
下面是一个常见的Java类列表及其对应的基于Redis的分布式实现:
分布式锁 和同步
JDK API |
Redisson implementation |
java.util.concurrent.locks.Lock |
org.redisson.api.RLock |
java.util.concurrent.locks.ReadWriteLock |
org.redisson.api.RReadWriteLock |
java.util.concurrent.CountDownLatch |
org.redisson.api.RCountDownLatch |
java.util.concurrent.Semaphore |
org.redisson.api.RSemaphore |
分布式 Collections
JDK API |
Redisson implementation |
java.util.Set |
org.redisson.api.RSet |
java.util.concurrent.ConcurrentMap |
org.redisson.api.RMap |
java.util.Queue |
org.redisson.api.RQueue, org.redisson.api.RPriorityQueue, org.redisson.api.RDelayedQueue |
java.util.Deque |
org.redisson.api.RDeque, org.redisson.api.RPriorityDeque |
java.util.concurrent.BlockingQueue |
org.redisson.api.RBlockingQueue |
java.util.concurrent.BlockingDeque |
org.redisson.api.RBlockingDeque |
分布式服务 Services
JDK API |
Redisson implementation |
Java RMI |
org.redisson.api.RRemoteService |
java.util.concurrent.ExecutorService |
org.redisson.api.RExecutorService |
java.util.concurrent.ScheduledExecutorService |
org.redisson.api.RScheduledExecutorService |
分布式对象 Objects
JDK API |
Redisson implementation |
java.util.concurrent.atomic.AtomicReference |
org.redisson.api.RBucket |
java.util.concurrent.atomic.AtomicLong |
org.redisson.api.RAtomicLong |
java.util.BitSet |
org.redisson.api.RBitSet |
byte[], java.io.InputStream, java.io.OutputStream |
org.redisson.api.RBinaryStream |
Redison支持几种类型的Redis连接。
1. 节点复制:主服务器自动发现更改(还支持AWS ElastiCache和Azure Redis缓存)。
2. 节点集群:自动服务器发现,状态和拓扑更新(还支持AWS ElastiCache集群和Azure Redis缓存)。
3. Sentinel节点:自动服务器发现和状态更新。
4. 主从节点。
5. 单节点。
Redison开发者维护两个版本行:
2.xx - 支持JDK 1.6,1.7,1.8 和Android
3.xx - 支持JDK 1.8。
快速开始
1. 定义依赖
Maven
<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.3.1</version> </dependency>
Gradle
compile 'org.redisson:redisson:3.3.1'
2. 创建配置对象
// from JSON Config config = Config.fromJSON(...) // from YAML Config config = Config.fromYAML(...) // or dynamically Config config = new Config(); config.useClusterServers()
3. 创建Redisson实例
RedissonClient redisson = Redisson.create(config);
4. 获得你需要的对象
RMap<MyKey, MyValue> map = redisson.getMap("myMap"); RLock lock = redisson.getLock("myLock"); RExecutorService executor = redisson.getExecutorService("myExecutorService"); // plus over 30 different objects and services ...