From 11bcbba5cd6091079a3b60210b4e50f153f06f5e Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 17 Dec 2015 14:48:45 +0300 Subject: [PATCH 1/4] Create CHANGELOG.MD --- CHANGELOG.MD | 275 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 275 insertions(+) create mode 100644 CHANGELOG.MD diff --git a/CHANGELOG.MD b/CHANGELOG.MD new file mode 100644 index 000000000..a34ad4810 --- /dev/null +++ b/CHANGELOG.MD @@ -0,0 +1,275 @@ +Redisson Releases History +================================ +####Please Note: trunk is current development branch. + +####15-Dec-2015 - version 2.2.3 released +Feature - ability to set connection listener via `Config.connectionListener` setting +Fixed - `RLock` expiration bug fixed (regression bug since 2.2.2) +Fixed - NPE in `RedissonSortedSet` constructor + +####14-Dec-2015 - version 2.2.2 released +Feature - `isShuttingDown` and `isShutdown` methods were added to RedissonClient and RedissonReactiveClient +Feature - __new object added__ `RSetCacheReactive` +Fixed - RLock expiration renewal task scheduling fixed (regression bug since 2.2.1) +Fixed - RExpirable.expireAsync timeUnit precision fixed (regression bug since 2.2.1) + +####11-Dec-2015 - version 2.2.1 released +Feature - __new object added__ `RReadWriteLock` with reentrant read/write locking +Feature - __new object added__ `RMapCache` map-based cache with TTL support for each entry +Feature - __new object added__ `RSetCache` set-based cache with TTL support for each value +Feature - `RBatchReactive.getKeys` method added +Feature - `RMap.values()`, `RMap.keySet()`, `RMap.entrySet()` reimplemented with live-view objects +Feature - `RObjectReactive.isExists`, `RObject.isExists` and `RObject.isExistsAsync` added +Fixed - `RLock.unlock` not thrown IllegalMonitorStateException + +####04-Dec-2015 - version 2.2.0 released +Since 2.2.0 version Redisson supports [Reactive Streams](http://www.reactive-streams.org). Use `Redisson.createReactive` method to access Reactive objects. + +Feature - [Reactive Streams](http://www.reactive-streams.org) support +Feature - `RList.addAllAsync` and `RMap.getAllAsync` methods added +Feature - `RList.equals` and `RList.hashCode` methods implemented +Feature - `pollFirst`, `pollFirstAsync`, `pollLast`, `pollLastAsync` methods added to `RScoredSortedSet` +Improvement - `RLock` and `RCountDownLatch` switched to `LongCodec` +__Breaking api change__ - `RExpirable` methods now uses milliseconds instead of seconds +Fixed - `RLock.delete` didn't check lock existence + +`Config.useMasterSlaveConnection` and `Config.useSentinelConnection` methods renamed to `Config.useSentinelServers` and `Config.useMasterSlaveServers` respectively +Deprecated methods are dropped + + +####30-Nov-2015 - version 2.1.6 released +Fixed - connection pool regression bug +Fixed - connection init during `Node.ping` and `ClusterNode.info` invocation + + +####24-Nov-2015 - version 2.1.5 released +Feature - new methods with `limit` option support were added to `RLexSortedSet`: `lexRange`, `lexRangeHead`, `lexRangeHeadAsync`, `lexRangeTail`, `lexRangeTailAsync`, `lexRangeAsync` (thanks to jackygurui) +Feature - new methods with `limit` option support were added to `RScoredSortedSet`: `valueRange`, `valueRangeAsync`, `entryRange`, `entryRangeAsync`, `valueRange`, `valueRangeAsync` (thanks to jackygurui) +Feature - `LOADING` Redis server response handling +Feature - `RKeys.getSlot` method added +Feature - new config options `reconnectionTimeout`, `failedAttempts`, `connectTimeout`, `slaveSubscriptionConnectionMinimumIdleSize`, `masterConnectionMinimumIdleSize`, `'slaveConnectionMinimumIdleSize`, `idleConnectionTimeout` +Feature - `RBitSet` object added +Feature - `RBlockingQueue.pollFromAny` and `RBlockingQueue.pollFromAnyAsync` methods added +Improvements - `LoadBalancer` interface refactored +Fixed - RedisTimeoutException message +Fixed - command execution timeout handling +Fixed - `RList.addAllAsync` +Fixed - `RSet.iterator` +Fixed - `RBatch.execute` and `RBatch.executeAsync` errors handling + + +####11-Nov-2015 - version 2.1.4 released +Cluster support improvements. New codecs. Stability improvements. + +Feature - [LZ4](https://github.com/jpountz/lz4-java) compression codec support +Feature - [CBOR](http://cbor.io/) binary json codec support (thanks to lefay) +Feature - [MsgPack](http://msgpack.org/) binary json codec support +Feature - [Fst](https://github.com/RuedigerMoeller/fast-serialization) serialization codec support +Feature - [Snappy](https://github.com/xerial/snappy-java) compression codec support +Feature - cluster slave nodes change monitoring +Feature - `Config.slaveFailedAttempts` and `Config.slaveReconnectionTimeout` config params added +Feature - `ClusterServersConfig.readFromSlaves` config param added +Improvement - async channel reconnection +Improvement - connection acquisition in async way +Improvement - cluster slot change/migration handling +Improvement - get cluster info from new cluster nodes not defined in initial config +__Deprecated__ - `refreshConnectionAfterFails` config param +Fixed - `RList.add(pos, element)` fixed +Fixed - Publish/Subscribe message decoding under heavy load +Fixed - cluster ASK response handling +Fixed - `RMap.putAll` fixed +Fixed - parsing cluster nodes info +Fixed - NPE during Publish/Subscribe event handling +Fixed - Redisson shutdown handling +Fixed - EOFException during RLock usage with SerializationCodec (thanks to Oleg Ternovoi) + +####17-Sep-2015 - version 2.1.3 released +Feature - Ability to define `Codec` for each object +Feature - `refreshConnectionAfterFails` setting added +Feature - [AWS Elasticache](https://aws.amazon.com/elasticache/) support via `Config.useElasticacheServers` method (thanks to Steve Ungerer) +Feature - `RScoredSortedSet` and `RLexSortedSet` added. Both uses native Redis Sorted Set commands. `RLexSortedSet`s stores only String objects and work with ZLEX-commands +Fixed - missed AUTH during channel reconnection +Fixed - resubscribe to subscribed topics during channel reconnection + +####05-Sep-2015 - version 2.1.2 released +Fixed - possible NPE during channel reconnection +Fixed - executeAsync freezes in cluster mode +Fixed - use same node for SCAN/SSCAN/HSCAN during iteration +Fixed - possible race-condition during master change +Fixed - `BlockingQueue.peek` race-condition +Fixed - NPE with empty sentinel servers +Fixed - unable to read `clientName` config param in Master\Slave and Sentinel modes +Fixed - "Too many open files" error in cluster mode + +####15-Aug-2015 - version 2.1.1 released +Feature - all keys operations extracted to `RKeys` interface +Feature - `RKeys.getKeys`, `RKeys.getKeysByPattern` and `RKeys.randomKey`methods added +Feature - `RBlockingQueueAsync.drainToAsync` method added +Feature - Redis nodes info and ping operations via `Redisson.getNodesGroup` or `Redisson.getClusterNodesGroup` now available +Improvement - added sentinel nodes discovery +Fixed - command encoding errors handling +Fixed - cluster empty slot handling +Fixed - connection hangs when there are no slaves in sentinel mode +Fixed - activate master as slave when there are no more available slaves in sentinel mode +Fixed - skip disconnected sentinels during startup +Fixed - slave node discovery in sentinel mode which has been disconnected since start +__Deprecated__ - Redisson methods `deleteAsync`, `delete`, `deleteByPatternAsync`, `deleteByPattern`, `findKeysByPatternAsync`, `findKeysByPattern`. Use same methods with `RKeys` interface + +####03-Aug-2015 - version 2.1.0 released +Feature - `RTopic` subscribtion/unsubscription status listener added +Feature - `RSet`: `removeRandom` and `removeRandomAsync` methods added +Improvement - `RList`: `retainAll`,`containsAll`, `indexOf`, `lastIndexOf` optimization +__Breaking api change__ - `findKeysByPattern` response interface changed to `Collection` +__Breaking api change__ - `RTopic` message listener interface changed +Fixed - NPE during cluster mode start +Fixed - timeout timer interval calculation +Fixed - `RBatch` NPE's with very big commands list +Fixed - `RBucket.set` with timeout + +####26-Jul-2015 - version 2.0.0 released +Starting from 2.0.0 version Redisson has a new own async and lock-free Redis client under the hood. Thanks to the new architecture pipline (command batches) support has been implemented and a lot of code has gone. + +Feature - new `RObject` methods: `move`, `moveAsync`, `migrate`, `migrateAsync` +Feature - new async interfaces: `RAsyncMap`, `RAtomicLongAsync`, `RBlockingQueueAsync`, `RCollectionAsync`, `RDequeAsync`, `RExpirableAsync`, `RHyperLogLogAsync`, `RListAsync`, `RObjectAsync`, `RQueueAsync`, `RScriptAsync`, `RSetAsync`, `RTopicAsync` +Feature - multiple commands batch (Redis pipelining) support via `Redisson.createBatch` method +Feature - new methods `flushall`, `deleteAsync`, `delete`, `deleteByPatternAsync`, `deleteByPattern`, `findKeysByPatternAsync`, `findKeysByPattern` added to `RedissonClient` interface +Improvement - closed channel detection speedup + +####22-Jul-2015 - version 1.3.1 released +Fixed - requests state sync during shutdown +Fixed - netty-transport-native-epoll is now has a provided scope +Fixed - NPE during `BlockingQueue.poll` invocation + +####04-Jul-2015 - version 1.3.0 released +Feature - `RQueue.pollLastAndOfferFirstTo` method added +Feature - `RObject.rename`, `RObject.renameAsync`, `RObject.renamenx`, `RObject.renamenxAsync` methods added +Feature - `RList.getAsync`, `RList.addAsync`, `RList.addAllAsync` methods added +Feature - `RObject.deleteAsync` method added +Feature - unix sockets support via `Configuration.useLinuxNativeEpoll` setting +Feature - `Redisson.getTopicPattern` method added (thanks to alex-sherwin) +Improvement - `RLock` auto-unlock then client lock-owner is gone (thanks to AndrewKolpakov) +Improvement - lua scripts used instead of multi/exec commands to avoid connection errors during execution (thanks to AndrewKolpakov) +Improvement - `RObject.delete` method now returns `boolean` status +Improvement - propagate Command processing exceptions to ConnectionManager (thanks to marko-stankovic) +Improvement - KryoCodec classes registration ability added +Fixed - slave status handling in Sentinel mode +Fixed - String codec +Fixed - Cluster ASKING command support +Fixed - `RedissonBlockingQueue#drainTo` method (thanks to Sergey Poletaev) +Fixed - Cluster.STATE.HANDSHAKE enum added +Fixed - `RedissonClient.getScript` method added +Fixed - `BlockingQueue.poll` method +Fixed - Incorrect map key encoding makes hmget return no fields when string keys are used (thanks to sammiq) + +####02-Apr-2015 - version 1.2.1 released +Feature - all redis-script commands via 'RScript' object +Feature - implementation of `java.util.concurrent.BlockingQueue` (thanks to pdeschen) +Feature - buckets load by pattern (thanks to mathieucarbou) +Improvement - IPv6 support +Improvement - `isEmpty` checks for added collections +Fixed - KryoCodec keys decoding (thanks to mathieucarbou) +Fixed - `RMap.addAndGet()` data format +Fixed - timeout support in cluster, sentinel and single connections configurations +Fixed - ClassCastException in `RedissonCountDownLatch.trySetCount` +Fixed - `RMap.replace` concurrency issue (thanks to AndrewKolpakov) +Fixed - `RLock` subscription timeout units fixed (thanks to AndrewKolpakov) +Fixed - Re-throw async exceptions (thanks to AndrewKolpakov) + +####09-Jan-2015 - version 1.2.0 released +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. + From 6b14ca03eb0f9398e9ca7a8d7f765f3fd2c6d6b9 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 17 Dec 2015 14:49:09 +0300 Subject: [PATCH 2/4] Rename CHANGELOG.MD to CHANGELOG.md --- CHANGELOG.MD => CHANGELOG.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CHANGELOG.MD => CHANGELOG.md (100%) diff --git a/CHANGELOG.MD b/CHANGELOG.md similarity index 100% rename from CHANGELOG.MD rename to CHANGELOG.md From a4fc54e2a3fa317f6b92905065795c6b3e5ae160 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 17 Dec 2015 14:52:46 +0300 Subject: [PATCH 3/4] Update README.md --- README.md | 280 +----------------------------------------------------- 1 file changed, 3 insertions(+), 277 deletions(-) diff --git a/README.md b/README.md index fbf851304..280ef740f 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,11 @@ Redisson - distributed and scalable Java data structures on top of Redis server. Use familiar Java data structures with power of [Redis](http://redis.io). Based on high-performance async and lock-free Java Redis client and [Netty 4](http://netty.io) framework. -Redis 2.8+ and JDK 1.6+ compatible +Redis 2.8+ and JDK 1.6+ compatible. -Read [wiki](https://github.com/mrniko/redisson/wiki) for more Redisson usage details +Read [wiki](https://github.com/mrniko/redisson/wiki) for more Redisson usage details. +[Redisson releases history](https://github.com/mrniko/redisson/blob/master/CHANGELOG.md). Licensed under the Apache License 2.0. @@ -74,281 +75,6 @@ Netflix Dyno client: [dyno] (https://github.com/Netflix/dyno) 武林Q传:[nbrpg](http://www.nbrpg.com/) Ocous: [ocous](http://www.ocous.com/) -Recent Releases -================================ -####Please Note: trunk is current development branch. - -####15-Dec-2015 - version 2.2.3 released -Feature - ability to set connection listener via `Config.connectionListener` setting -Fixed - `RLock` expiration bug fixed (regression bug since 2.2.2) -Fixed - NPE in `RedissonSortedSet` constructor - -####14-Dec-2015 - version 2.2.2 released -Feature - `isShuttingDown` and `isShutdown` methods were added to RedissonClient and RedissonReactiveClient -Feature - __new object added__ `RSetCacheReactive` -Fixed - RLock expiration renewal task scheduling fixed (regression bug since 2.2.1) -Fixed - RExpirable.expireAsync timeUnit precision fixed (regression bug since 2.2.1) - -####11-Dec-2015 - version 2.2.1 released -Feature - __new object added__ `RReadWriteLock` with reentrant read/write locking -Feature - __new object added__ `RMapCache` map-based cache with TTL support for each entry -Feature - __new object added__ `RSetCache` set-based cache with TTL support for each value -Feature - `RBatchReactive.getKeys` method added -Feature - `RMap.values()`, `RMap.keySet()`, `RMap.entrySet()` reimplemented with live-view objects -Feature - `RObjectReactive.isExists`, `RObject.isExists` and `RObject.isExistsAsync` added -Fixed - `RLock.unlock` not thrown IllegalMonitorStateException - -####04-Dec-2015 - version 2.2.0 released -Since 2.2.0 version Redisson supports [Reactive Streams](http://www.reactive-streams.org). Use `Redisson.createReactive` method to access Reactive objects. - -Feature - [Reactive Streams](http://www.reactive-streams.org) support -Feature - `RList.addAllAsync` and `RMap.getAllAsync` methods added -Feature - `RList.equals` and `RList.hashCode` methods implemented -Feature - `pollFirst`, `pollFirstAsync`, `pollLast`, `pollLastAsync` methods added to `RScoredSortedSet` -Improvement - `RLock` and `RCountDownLatch` switched to `LongCodec` -__Breaking api change__ - `RExpirable` methods now uses milliseconds instead of seconds -Fixed - `RLock.delete` didn't check lock existence - -`Config.useMasterSlaveConnection` and `Config.useSentinelConnection` methods renamed to `Config.useSentinelServers` and `Config.useMasterSlaveServers` respectively -Deprecated methods are dropped - - -####30-Nov-2015 - version 2.1.6 released -Fixed - connection pool regression bug -Fixed - connection init during `Node.ping` and `ClusterNode.info` invocation - - -####24-Nov-2015 - version 2.1.5 released -Feature - new methods with `limit` option support were added to `RLexSortedSet`: `lexRange`, `lexRangeHead`, `lexRangeHeadAsync`, `lexRangeTail`, `lexRangeTailAsync`, `lexRangeAsync` (thanks to jackygurui) -Feature - new methods with `limit` option support were added to `RScoredSortedSet`: `valueRange`, `valueRangeAsync`, `entryRange`, `entryRangeAsync`, `valueRange`, `valueRangeAsync` (thanks to jackygurui) -Feature - `LOADING` Redis server response handling -Feature - `RKeys.getSlot` method added -Feature - new config options `reconnectionTimeout`, `failedAttempts`, `connectTimeout`, `slaveSubscriptionConnectionMinimumIdleSize`, `masterConnectionMinimumIdleSize`, `'slaveConnectionMinimumIdleSize`, `idleConnectionTimeout` -Feature - `RBitSet` object added -Feature - `RBlockingQueue.pollFromAny` and `RBlockingQueue.pollFromAnyAsync` methods added -Improvements - `LoadBalancer` interface refactored -Fixed - RedisTimeoutException message -Fixed - command execution timeout handling -Fixed - `RList.addAllAsync` -Fixed - `RSet.iterator` -Fixed - `RBatch.execute` and `RBatch.executeAsync` errors handling - - -####11-Nov-2015 - version 2.1.4 released -Cluster support improvements. New codecs. Stability improvements. - -Feature - [LZ4](https://github.com/jpountz/lz4-java) compression codec support -Feature - [CBOR](http://cbor.io/) binary json codec support (thanks to lefay) -Feature - [MsgPack](http://msgpack.org/) binary json codec support -Feature - [Fst](https://github.com/RuedigerMoeller/fast-serialization) serialization codec support -Feature - [Snappy](https://github.com/xerial/snappy-java) compression codec support -Feature - cluster slave nodes change monitoring -Feature - `Config.slaveFailedAttempts` and `Config.slaveReconnectionTimeout` config params added -Feature - `ClusterServersConfig.readFromSlaves` config param added -Improvement - async channel reconnection -Improvement - connection acquisition in async way -Improvement - cluster slot change/migration handling -Improvement - get cluster info from new cluster nodes not defined in initial config -__Deprecated__ - `refreshConnectionAfterFails` config param -Fixed - `RList.add(pos, element)` fixed -Fixed - Publish/Subscribe message decoding under heavy load -Fixed - cluster ASK response handling -Fixed - `RMap.putAll` fixed -Fixed - parsing cluster nodes info -Fixed - NPE during Publish/Subscribe event handling -Fixed - Redisson shutdown handling -Fixed - EOFException during RLock usage with SerializationCodec (thanks to Oleg Ternovoi) - -####17-Sep-2015 - version 2.1.3 released -Feature - Ability to define `Codec` for each object -Feature - `refreshConnectionAfterFails` setting added -Feature - [AWS Elasticache](https://aws.amazon.com/elasticache/) support via `Config.useElasticacheServers` method (thanks to Steve Ungerer) -Feature - `RScoredSortedSet` and `RLexSortedSet` added. Both uses native Redis Sorted Set commands. `RLexSortedSet`s stores only String objects and work with ZLEX-commands -Fixed - missed AUTH during channel reconnection -Fixed - resubscribe to subscribed topics during channel reconnection - -####05-Sep-2015 - version 2.1.2 released -Fixed - possible NPE during channel reconnection -Fixed - executeAsync freezes in cluster mode -Fixed - use same node for SCAN/SSCAN/HSCAN during iteration -Fixed - possible race-condition during master change -Fixed - `BlockingQueue.peek` race-condition -Fixed - NPE with empty sentinel servers -Fixed - unable to read `clientName` config param in Master\Slave and Sentinel modes -Fixed - "Too many open files" error in cluster mode - -####15-Aug-2015 - version 2.1.1 released -Feature - all keys operations extracted to `RKeys` interface -Feature - `RKeys.getKeys`, `RKeys.getKeysByPattern` and `RKeys.randomKey`methods added -Feature - `RBlockingQueueAsync.drainToAsync` method added -Feature - Redis nodes info and ping operations via `Redisson.getNodesGroup` or `Redisson.getClusterNodesGroup` now available -Improvement - added sentinel nodes discovery -Fixed - command encoding errors handling -Fixed - cluster empty slot handling -Fixed - connection hangs when there are no slaves in sentinel mode -Fixed - activate master as slave when there are no more available slaves in sentinel mode -Fixed - skip disconnected sentinels during startup -Fixed - slave node discovery in sentinel mode which has been disconnected since start -__Deprecated__ - Redisson methods `deleteAsync`, `delete`, `deleteByPatternAsync`, `deleteByPattern`, `findKeysByPatternAsync`, `findKeysByPattern`. Use same methods with `RKeys` interface - -####03-Aug-2015 - version 2.1.0 released -Feature - `RTopic` subscribtion/unsubscription status listener added -Feature - `RSet`: `removeRandom` and `removeRandomAsync` methods added -Improvement - `RList`: `retainAll`,`containsAll`, `indexOf`, `lastIndexOf` optimization -__Breaking api change__ - `findKeysByPattern` response interface changed to `Collection` -__Breaking api change__ - `RTopic` message listener interface changed -Fixed - NPE during cluster mode start -Fixed - timeout timer interval calculation -Fixed - `RBatch` NPE's with very big commands list -Fixed - `RBucket.set` with timeout - -####26-Jul-2015 - version 2.0.0 released -Starting from 2.0.0 version Redisson has a new own async and lock-free Redis client under the hood. Thanks to the new architecture pipline (command batches) support has been implemented and a lot of code has gone. - -Feature - new `RObject` methods: `move`, `moveAsync`, `migrate`, `migrateAsync` -Feature - new async interfaces: `RAsyncMap`, `RAtomicLongAsync`, `RBlockingQueueAsync`, `RCollectionAsync`, `RDequeAsync`, `RExpirableAsync`, `RHyperLogLogAsync`, `RListAsync`, `RObjectAsync`, `RQueueAsync`, `RScriptAsync`, `RSetAsync`, `RTopicAsync` -Feature - multiple commands batch (Redis pipelining) support via `Redisson.createBatch` method -Feature - new methods `flushall`, `deleteAsync`, `delete`, `deleteByPatternAsync`, `deleteByPattern`, `findKeysByPatternAsync`, `findKeysByPattern` added to `RedissonClient` interface -Improvement - closed channel detection speedup - -####22-Jul-2015 - version 1.3.1 released -Fixed - requests state sync during shutdown -Fixed - netty-transport-native-epoll is now has a provided scope -Fixed - NPE during `BlockingQueue.poll` invocation - -####04-Jul-2015 - version 1.3.0 released -Feature - `RQueue.pollLastAndOfferFirstTo` method added -Feature - `RObject.rename`, `RObject.renameAsync`, `RObject.renamenx`, `RObject.renamenxAsync` methods added -Feature - `RList.getAsync`, `RList.addAsync`, `RList.addAllAsync` methods added -Feature - `RObject.deleteAsync` method added -Feature - unix sockets support via `Configuration.useLinuxNativeEpoll` setting -Feature - `Redisson.getTopicPattern` method added (thanks to alex-sherwin) -Improvement - `RLock` auto-unlock then client lock-owner is gone (thanks to AndrewKolpakov) -Improvement - lua scripts used instead of multi/exec commands to avoid connection errors during execution (thanks to AndrewKolpakov) -Improvement - `RObject.delete` method now returns `boolean` status -Improvement - propagate Command processing exceptions to ConnectionManager (thanks to marko-stankovic) -Improvement - KryoCodec classes registration ability added -Fixed - slave status handling in Sentinel mode -Fixed - String codec -Fixed - Cluster ASKING command support -Fixed - `RedissonBlockingQueue#drainTo` method (thanks to Sergey Poletaev) -Fixed - Cluster.STATE.HANDSHAKE enum added -Fixed - `RedissonClient.getScript` method added -Fixed - `BlockingQueue.poll` method -Fixed - Incorrect map key encoding makes hmget return no fields when string keys are used (thanks to sammiq) - -####02-Apr-2015 - version 1.2.1 released -Feature - all redis-script commands via 'RScript' object -Feature - implementation of `java.util.concurrent.BlockingQueue` (thanks to pdeschen) -Feature - buckets load by pattern (thanks to mathieucarbou) -Improvement - IPv6 support -Improvement - `isEmpty` checks for added collections -Fixed - KryoCodec keys decoding (thanks to mathieucarbou) -Fixed - `RMap.addAndGet()` data format -Fixed - timeout support in cluster, sentinel and single connections configurations -Fixed - ClassCastException in `RedissonCountDownLatch.trySetCount` -Fixed - `RMap.replace` concurrency issue (thanks to AndrewKolpakov) -Fixed - `RLock` subscription timeout units fixed (thanks to AndrewKolpakov) -Fixed - Re-throw async exceptions (thanks to AndrewKolpakov) - -####09-Jan-2015 - version 1.2.0 released -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: From b37df7637730cc8cc3fc8303a9105a2922486861 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Thu, 17 Dec 2015 14:53:21 +0300 Subject: [PATCH 4/4] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 280ef740f..24209bb97 100644 --- a/README.md +++ b/README.md @@ -82,12 +82,12 @@ Include the following to your dependency list: org.redisson redisson - 2.2.1 + 2.2.3 ### Gradle - compile 'org.redisson:redisson:2.2.1' + compile 'org.redisson:redisson:2.2.3' ### Supported by