使用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 ...

Redis集群安装

NoSQL专题