|
|
|
##Redisson - distributed and scalable Java data structures on top of Redis server. Advanced Redis client
|
|
|
|
|
|
|
|
Use familiar Java data structures with power of [Redis](http://redis.io).
|
|
|
|
|
|
|
|
Based on patched version of [lettuce](https://github.com/wg/lettuce) [Redis](http://redis.io) client and [Netty 4](http://netty.io) framework.
|
|
|
|
Redis 2.6+ and JDK 1.6+ compatible
|
|
|
|
|
|
|
|
|
|
|
|
Read [wiki](https://github.com/mrniko/redisson/wiki) for more Redisson usage details
|
|
|
|
|
|
|
|
|
|
|
|
Licensed under the Apache License 2.0.
|
|
|
|
|
|
|
|
|
|
|
|
Features
|
|
|
|
================================
|
|
|
|
* Cluster servers mode:
|
|
|
|
1. automatic master discovery
|
|
|
|
2. automatic new master server discovery
|
|
|
|
3. automatic slots change discovery
|
|
|
|
* Sentinel servers mode:
|
|
|
|
1. automatic master and slave servers discovery
|
|
|
|
2. automatic new master server discovery
|
|
|
|
3. automatic new slave servers discovery
|
|
|
|
4. automatic slave servers offline/online discovery
|
|
|
|
5. read data using slave servers, write data using master server
|
|
|
|
* Master with Slave servers mode: read data using slave servers, write data using master server
|
|
|
|
* Single server mode: read and write data using single server
|
|
|
|
* Distributed implementation of `java.util.List`
|
|
|
|
* Distributed implementation of `java.util.Set`
|
|
|
|
* Distributed implementation of `java.util.SortedSet`
|
|
|
|
* Distributed implementation of `java.util.Queue`
|
|
|
|
* Distributed implementation of `java.util.Deque`
|
|
|
|
* Distributed implementation of `java.util.Map`
|
|
|
|
* Distributed implementation of `java.util.concurrent.ConcurrentMap`
|
|
|
|
* Distributed implementation of reentrant `java.util.concurrent.locks.Lock` with TTL support
|
|
|
|
* Distributed alternative to the `java.util.concurrent.atomic.AtomicLong`
|
|
|
|
* Distributed alternative to the `java.util.concurrent.CountDownLatch`
|
|
|
|
* Distributed publish/subscribe messaging via `org.redisson.core.RTopic`
|
|
|
|
* Distributed HyperLogLog via `org.redisson.core.RHyperLogLog`
|
|
|
|
* Thread-safe implementation
|
|
|
|
* Supports OSGi
|
|
|
|
* With over 110 unit tests
|
|
|
|
|
|
|
|
Projects using Redisson
|
|
|
|
================================
|
|
|
|
Setronica: [setronica.com](http://setronica.com/)
|
|
|
|
Monits: [monits.com](http://monits.com/)
|
|
|
|
Brookhaven National Laboratory: [bnl.gov](http://bnl.gov/)
|
|
|
|
Netflix Dyno client: [dyno] (https://github.com/Netflix/dyno)
|
|
|
|
|
|
|
|
Recent Releases
|
|
|
|
================================
|
|
|
|
####Please Note: trunk is current development branch.
|
|
|
|
|
|
|
|
####??-Jan-2015 - version 1.2
|
|
|
|
Feature - cluster mode support
|
|
|
|
Fixed - `RList` iterator race conditions
|
|
|
|
Fixed - `RDeque.addFirst` `RDeque.addLast` methods
|
|
|
|
Fixed - OSGi support
|
|
|
|
|
|
|
|
####16-Dec-2014 - version 1.1.7 released
|
|
|
|
Improvement - `RAtomicLong` optimization
|
|
|
|
Fixed - `RMap.fastRemove` and `RMap.getAll` methods
|
|
|
|
Fixed - `RTopic` listeners re-subscribing in sentinel mode
|
|
|
|
Fixed - `RSet.toArray` and `RSet.iterator` values order
|
|
|
|
Fixed - keys iteration in `RMap.getAll`
|
|
|
|
Fixed - `RSet` iteration
|
|
|
|
Fixed - `RAtomicLong` NPE
|
|
|
|
Fixed - infinity loop during master/slave connection acquiring
|
|
|
|
Fixed - `RedissonList.addAll` result
|
|
|
|
|
|
|
|
####18-Nov-2014 - version 1.1.6 released
|
|
|
|
Feature - `RBucket.exists` and `RBucket.existsAsync` methods added
|
|
|
|
Feature - `RMap.addAndGet` method added
|
|
|
|
Feature - database index via `database` and operation timeout via `timeout` config params added
|
|
|
|
Improvement - `RLock` optimization
|
|
|
|
__Breaking api change__ - Redisson now uses `RedissonClient` interface
|
|
|
|
Fixed - NPE in `CommandOutput`
|
|
|
|
Fixed - unsubscribing during `RTopic.removeListener`
|
|
|
|
Fixed - all object names encoding, no more quotes
|
|
|
|
Fixed - HashedWheelTimer shutdown
|
|
|
|
Fixed - `RLock` race conditions (thanks to jsotuyod and AndrewKolpakov)
|
|
|
|
Fixed - `RCountDownLatch` race conditions
|
|
|
|
|
|
|
|
####23-Jul-2014 - version 1.1.5 released
|
|
|
|
Feature - operations auto-retry. `retryAttempts` and `retryInterval` params added for each connection type
|
|
|
|
Feature - `RMap.filterEntries`, `RMap.getAll`, `RMap.filterKeys`, `RMap.filterValues` methods added
|
|
|
|
Feature - `RMap.fastRemove`, `RMap.fastRemoveAsync`, `RMap.fastPut` & `RMap.fastPutAsync` methods added
|
|
|
|
Fixed - async operations timeout handling
|
|
|
|
Fixed - sorting algorithm used in `RSortedSet`.
|
|
|
|
|
|
|
|
####15-Jul-2014 - version 1.1.4 released
|
|
|
|
Feature - new `RLock.lockInterruptibly`, `RLock.tryLock`, `RLock.lock` methods with TTL support
|
|
|
|
Fixed - pub/sub connections reattach then slave/master down
|
|
|
|
Fixed - turn off connection watchdog then slave/master down
|
|
|
|
Fixed - sentinel master switch
|
|
|
|
Fixed - slave down connection closing
|
|
|
|
|
|
|
|
####13-Jul-2014 - version 1.1.3 released
|
|
|
|
Improvement - RedissonCountDownLatch optimization
|
|
|
|
Improvement - RedissonLock optimization
|
|
|
|
Fixed - RedissonLock thread-safety
|
|
|
|
Fixed - master/slave auth using Sentinel servers
|
|
|
|
Fixed - slave down handling using Sentinel servers
|
|
|
|
|
|
|
|
####03-Jul-2014 - version 1.1.2 released
|
|
|
|
Improvement - RedissonSet.iterator implemented with sscan
|
|
|
|
Improvement - RedissonSortedSet.iterator optimization
|
|
|
|
Feature - `RSortedSet.removeAsync`, `RSortedSet.addAsync`, `RSet.removeAsync`, RSet.addAsync methods added
|
|
|
|
Feature - slave up/down detection in Sentinel servers connection mode
|
|
|
|
Feature - new-slave automatic discovery in Sentinel servers connection mode
|
|
|
|
|
|
|
|
####17-June-2014 - version 1.1.1 released
|
|
|
|
Feature - sentinel servers support
|
|
|
|
Fixed - connection leak in `RTopic`
|
|
|
|
Fixed - setted password not used in single server connection
|
|
|
|
|
|
|
|
####07-June-2014 - version 1.1.0 released
|
|
|
|
Feature - master/slave connection management
|
|
|
|
Feature - simple set/get object support via `org.redisson.core.RBucket`
|
|
|
|
Feature - hyperloglog support via `org.redisson.core.RHyperLogLog`
|
|
|
|
Feature - new methods `getAsync`, `putAsync` and `removeAsync` added to `org.redisson.core.RMap`
|
|
|
|
Feature - new method `publishAsync` added to `org.redisson.core.RTopic`
|
|
|
|
Feature - [Kryo](https://github.com/EsotericSoftware/kryo) codec added (thanks to mathieucarbou)
|
|
|
|
__Breaking api change__ - `org.redisson.Config` model changed
|
|
|
|
Fixed - score calucaltion algorithm used in `RSortedSet`.
|
|
|
|
Fixed - `RMap.put` & `RMap.remove` result consistency fixed.
|
|
|
|
Fixed - `RTopic.publish` now returns the number of clients that received the message
|
|
|
|
Fixed - reconnection handling (thanks to renzihui)
|
|
|
|
Improvement - `org.redisson.core.RTopic` now use lazy apporach for subscribe/unsubscribe
|
|
|
|
|
|
|
|
####04-May-2014 - version 1.0.4 released
|
|
|
|
Feature - distributed implementation of `java.util.Deque`
|
|
|
|
Feature - some objects implements `org.redisson.core.RExpirable`
|
|
|
|
Fixed - JsonJacksonCodec lazy init
|
|
|
|
|
|
|
|
####26-Mar-2014 - version 1.0.3 released
|
|
|
|
Fixed - RedissonAtomicLong state format
|
|
|
|
Fixed - Long serialization in JsonJacksonCodec
|
|
|
|
|
|
|
|
####05-Feb-2014 - version 1.0.2 released
|
|
|
|
Feature - distributed implementation of `java.util.SortedSet`
|
|
|
|
Fixed - OSGi compability
|
|
|
|
|
|
|
|
####17-Jan-2014 - version 1.0.1 released
|
|
|
|
Improvement - forceUnlock, isLocked, isHeldByCurrentThread and getHoldCount methods added to RLock
|
|
|
|
Feature - connection load balancer to use multiple Redis servers
|
|
|
|
Feature - published in maven central repo
|
|
|
|
|
|
|
|
####11-Jan-2014 - version 1.0.0 released
|
|
|
|
First stable release.
|
|
|
|
|
|
|
|
### Maven
|
|
|
|
|
|
|
|
Include the following to your dependency list:
|
|
|
|
|
|
|
|
<dependency>
|
|
|
|
<groupId>org.redisson</groupId>
|
|
|
|
<artifactId>redisson</artifactId>
|
|
|
|
<version>1.1.7</version>
|
|
|
|
</dependency>
|