Releases: redisson/redisson
redisson-3.39.0
Feature - partitioning implementation for RTopic
object
Feature - partitioning implementation for RShardedTopic
object
Feature - partitioning implementation for RReliableTopic
object
Feature - ZStandard compression codec added (ZStdCodec)
Feature - ability to register listeners for RListMultimap
and RSetMultimap
objects
Feature - ability to register listeners for RTimeSeries
object
Fixed - possible race-condition in RMapCache.computeIfAbsent()
method
Fixed - possible race-condition in computeIfAbsent()
, computeIfPresent()
methods of RMap object
Fixed - RMapCache.computeIfAbsentAsync()
method isn't implemented
Fixed - use CursorId in ScanIteration to avoid long overflow in Spring Data 3.3 implementation (thanks to @vlastikcz)
Fixed - unable to cancel a task created by RExecutorService.scheduleAtFixedRate()
method (thanks to @zcxsythenew)
Fixed - potential LocalCache memory leak if useObjectAsCacheKey = true (thanks to @lehuuthanh5)
Fixed - EntryListener is not working on Turkish language Windows 10
Fixed - Redisson shutdown exception is thrown during background process of expired Tomcat sessions
Fixed - some methods of Reactive and RxJava API don't work in GraalVM native image
Fixed - RTransactionRx
and RTransactionReactive
don't work in GraalVM native image
Fixed - JsonJacksonCodec
doesn't work in GraalVM native image
Fixed - NPE is thrown if RExecutorService
task submitted in GraalVM native image
Fixed - RObject.rename()
method does not replace an existing structure in cluster mode
redisson-3.38.1
Fixed - Kryo codec upgraded to 5.6.2 for JDK 8 compatibility (thanks to @Wujiaxuan007)
Fixed - pollAsync() and removeAsync() methods of RPriorityQueue and RPriorityDeque objects aren't guarded properly with lock
Fixed - Spring Cache Cacheable(sync)
annotation loads value multiple times for reactive types or completableFuture
redisson-3.38.0
Feature - Local cache for Live Object Service support
Feature - RClientSideCaching object added. Client side caching through RESP3 protocol
Feature - Tomcat 11 support
Feature - RBatch.getSearch()
method added (thanks to @pfyod)
Feature - RedissonClient.getMultiLock()
method added for locking on objects (thanks to @lyrric)
Feature - RPatternTopic.removeListener()
accepts multiple ids
Feature - LocalCachedMapOptions.useTopicPattern()
setting added
Feature - InetAddress and SocketAddress serialization added to Kryo5Codec
Breaking change - RLongAdder and RDoubleAdder topic channel name has been renamed
Improvement - timeToLive parameter renamed to keepAliveTime for RRateLimiter.trySetRate()
and setRate()
methods (thanks to @lyrric)
Fixed - lazyInitialization=true
doesn't work in cluster mode (regression since 3.27.0)
Fixed - Spring Cache @Cacheable(sync) doesn't work with reactive types or completableFuture
Fixed - Pub/Sub connections randomly disconnecting (regression since 3.26.0) (thanks to @Wujiaxuan007)
Fixed - RLiveObjectService.persist()
and merge()
methods, when called with multiple arguments, return detached objects
Fixed - RJsonBucketReactive
and RJsonBucketRx
use Reactive Types as arguments
Fixed - ClassNotFoundException
is thrown when a LiveObject expires
Fixed - Micronaut native image build
Fixed - Quarkus native image build
Fixed - RSearch.info()
method throws an exception on infinity values (thanks to @iamtakingiteasy)
redisson-3.37.0
Feature - findCommon()
and findCommonLength()
methods added to RBucket
object
Feature - RMapCache.computeIfAbsent()
method with TTL parameter added (thanks to @lyrric)
Feature - Apache Tomcat RedissonSessionManager.setConfig()
method added (thanks to @jglapa)
Feature - LocalCachedMapOptions.useObjectAsCacheKey()
setting added (thanks to @lehuuthanh5)
Feature - trySetRate()
and setRate()
methods with TTL parameter added to RRateLimiter
object
Feature - RKeys.getKeys()
method with type parameter added
Improvement - RRemoteService
method calls optimization
Fixed - Spring Data Redis method RedisSetCommands.isMember()
doesn't work
Fixed - Spring Data Redis xcaim()
and xClaimJustId()
methods don't use getMinIdleTime() parameter (thanks to @jinia91)
Fixed - retainAll()
and containsAll()
methods of RSet
object throw "too many results to unpack" error
Fixed - ServiceManager.execute()
method may hang in case of exception
Fixed - RedissonNode.shutdown()
method doesn't stop executors
Fixed - listeners reattach process should be stopped on Redisson shutdown
Fixed - BiHashMap
usage removed
Fixed - 100% CPU usage by CommandsQueue in rare cases
Fixed - ProtobufCodec
doesn't work with CompositeCodec
redisson-3.36.0
Feature - Kryo5Codec
useReferences
setting added
Feature - RListMultimapCacheNative
and RSetMultimapCacheNative
objects added. Require Redis 7.4+
Feature - AggregationOptions.sortBy()
method with withCount
parameter added (thanks to @pfyod)
Feature - allowedClasses
setting added to FuryCodec
Feature - addIfAbsent(Map)
method added to RSetCache
object (thanks to @lyrric)
Improvement - 'hmget' should be instead of 'hget' in RMapCache.getAllWithTTLOnly()
method
Fixed - RedisExecutor throws "Failed to submit a listener notification task" error during shutdown
Fixed - Keep the jmockit version in the plugin consistent with that in the dependencies (thanks to @lyrric)
Fixed - hostname after comma in Redis Cluster topology isn't parsed
Fixed - drainToAsync()
method returns an incorrect value (thanks to @seakider)
Fixed - numeric cast in CommandDecoder
Fixed - RLiveObject
value shouldn't be deleted during index update
Fixed - RSetCache.addAllIfAbsent()
method doesn't work
Fixed - missed getSetMultimapCache()
and getListMultimapCache()
methods in RBatchReactive
object
Fixed - missed getMapCacheNative()
method in RBatch
object
Fixed - MapValueDecoder
throws NPE
Fixed - EnumMap
type handling by Kryo5Codec
Fixed - Kryo5Codec
registrationRequired
setting replaced with allowedClasses
Fixed - JCache eviction task isn't removed on close()
method invocation
Fixed - missed destroy()
method for RListMultimapCache
and RSetMultimapCache
objects
redisson-3.35.0
Feature - INDEXEMPTY
option added to tag and text fields in RSearch.createIndex()
method
Feature - INDEXMISSING
option added to all fields in RSearch.createIndex()
method
Feature - StreamMessageId.LAST
option added
Feature - copy()
and copyAndReplace()
methods added to RObject
interface
Feature - Apache Fury codec support
Feature - RSetCache
object supports TrackingListener
, SetAddListener
and SetRemoveListener
listeners
Feature - RClusteredMapCacheNative
object implemented. Requires Redis 7.4+
Feature - RLocalCachedMapCacheNative
object implemented. Requires Redis 7.4+
Feature - localcache_native
and clustered_native
implementations added to Quarkus module. Requires Redis 7.4+
Feature - RedissonClusteredCacheNative
and RedissonLocalCachedCacheNative
implementations added to MyBatis module. Requires Redis 7.4+
Feature - RedissonClusteredSpringCacheNativeManager
and RedissonSpringLocalCachedCacheNativeManager
implementations added to Spring Cache module. Requires Redis 7.4+
Feature - RedissonClusteredNativeRegionFactory
and RedissonLocalCachedNativeRegionFactory
added to Hibernate module. Requires Redis 7.4+
Feature - local-caches-native
and clustered-caches-native
implementations added to Micronaut module. Requires Redis 7.4+
Improvement - ProtobufCodec
memory allocation optimization
Improvement - Apache Fury codec optimization (thanks to @chaokunyang)
Improvement - quarkus should make an attempt to read config file using Thread's ContextClassLoader
Improvement - quarkus should make an attempt to read config file using Thread's ContextClassLoader (thanks to @seakider)
Improvement - don't take lock for RMap.computeIfAbsent()
if only get is needed (thanks to @shreyas-sprinklr)
Fixed - writer, writeMode, writerAsync, writeBehindDelay, writeBehindBatchSize, loader, loaderAsync settings aren't applied to caches-native in Micronaut module
Fixed - missed caches-native
implementation for Micronaut 3.x and Micronaut 2.x
Fixed - a new retry attempt to the same node isn't made for INFO_REPLICATION, SENTINEL_GET_MASTER_ADDR_BY_NAME, SENTINEL_SENTINELS, SENTINEL_SLAVES and CLUSTER_NODES commands
Fixed - RType.JSON
and RType.STREAM
can't be resolved by RKey.getType()
method
Fixed - RKeys.removeListener()
method doesn't remove NewObjectListener
and SetObjectListener
Fixed - copy()
method doesn't works with db (thanks to @seakider)
Fixed - maven.compiler.release
setting isn't defined
Fixed - RSearch.info()
method throws NumberFormatException
(thanks to @iamtakingiteasy)
Fixed - timeout parameters defined per object aren't applied to RJsonBuckets
and RJsonBucket
objects
Fixed - RedisException is thrown by .removeAll()
and .indexOf()
methods of RedissonSubList
object (thanks to @seakider)
Fixed - wrong event keyspace name for MapCacheNative
object (thanks to @larryTheCoder)
Fixed - missed rename()
and renamenx()
methods implementation for RIdGenerator
, RMapCache
and RTimeSeries
objects
Fixed - Kryo5Codec
doesn't handle UnmodifiableCollection
, SynchronizedCollection
and CheckedCollection
Fixed - RRateLimiter
incorrect rate count in the event of an attempt to exceed the limit
Fixed - credentials-resolver
, failed-slave-node-detector
, command-mapper
, name-mapper
, nat-mapper
settings aren't recognized by Helidon and Quarkus
Fixed - RMultimapCacheReactive.expireKey()
method returns Single instead of Reactor Mono
Fixed - @RObjectField
annotation with codec option has no effect
Fixed - an exception is thrown if the @RObjectField
annotation is defined on a field
Fixed - RDestroyable.destroy()
method doesn't remove listeners
Fixed - FailedSlaveNodeDetector's parameters by can't be defined in YAML config
redisson-3.34.1
Fixed - RObject.rename()
method doesn't work in cluster
redisson-3.34.0
Feature - RJsonBuckets object added (thanks to @seakider)
Feature - remainTimeToLive(Set keys)
and clearExpire(Set keys)
methods added to RMapCacheNative
object
Feature - eval()
and evalSha()
methods added to RScript
object for execution on all nodes in Redis Cluster
Improvement - performance optimization for Apache Tomcat Session management
Improvement - default value of quietPeriod set to 0 in RedissonClient.shutdown()
method
Improvement - upgrade protobuf from 3.16.3 to 4.27.2 (thanks to @zzhlhc)
Fixed - Apache Tomcat Session Manager throws CROSSSLOT Keys in request don't hash to the same slot (regression since 3.32.0)
Fixed - empty partitions shouldn't be skipped in cluster topology scan
Fixed - ClusterConnectionManager.checkSlotsMigration()
method throws NPE
Fixed - RSearch IndexInfoDecoder may throw NPE
Fixed - local cached Map implementations don't emit cache clear event on clear()
or delete()
methods call
Fixed - RObject.rename()
method doesn't work in cluster
Fixed - a new attempt to send a command should be made right after channel reconnection
Fixed - 'race condition' while calling RLock.tryLock() method (thanks to @pad-master82)
Fixed - Can't connect to servers error doesn't show exception reported during connection
Fixed - SeekableByteChannel.truncate()
method (thanks to @seakider)
Fixed - RMap.computeAsync()
method doesn't handle empty keys properly (thanks to @phrone)
redisson-3.33.0
Feature - RJsonStore object added
Feature - RLocalCachedJsonStore object added
Feature - RSearch.getIndexes()
method added
Feature - RedissonRegionNativeFactory
added for Hibernate module. Requires Redis 7.4+
Feature - RedissonSpringCacheNativeManager
implemented. Requires Redis 7.4+
Feature - RedissonCacheNative
implementation added for Mybatis cache. Requires Redis 7.4+
Feature - caches-native
cache type added to Micronaut module. Requires Redis 7.4+
Improvement - Spring Cache RedissonCache.put()
method optimization
Breaking change - JsonCodec interface refactoring
Fixed - re-added master node isn't updated in Cluster topology
Fixed - expiration time isn't set for Apacht Tomcat Manager redisson:tomcat_notified_nodes
keys (thanks to @ehardy)
Fixed - RSearch AggregationOptions.loadAll()
setting isn't applied
Fixed - containsAll() method of RList, RQueue, RMultimap objects returns incorrect result (thanks to @seakider)
Fixed - too many requests with small threads amount may cause OOM
Fixed - connection leak during high load with few connections
Fixed - RingBuffer#setCapacity, trim list incorrect (thanks to @seakider)
Fixed - password shouldn't be printed in logs
Fixed - encoded user/password in URL aren't accepted
redisson-3.32.0
Feature - Quarkus Cache implementation added
Feature - RMapCacheNative
implementation which uses Redis 7.4+ commands
Feature - unlinkByPattern() method added to RKeys interface (thanks to @seakider)
Fixed - Apache Tomcat request.changeSessionId() method does not change the session id in Redis (thanks to @bclay2116)
Fixed - RSearch
parse params error (thanks to @seakider)
Fixed - RSearch.info()
throws NumberFormatException
(thanks to @seakider)
Fixed - cluster failover handling
Fixed - last master node shouldn't be removed in cluster topology
Fixed - duplicated master/slave added log output in sentinel mode
Fixed - connection leak if master change operation failed during failover
Fixed - RxJava3
request can't be canceled
Fixed - RFairLock
doesn't calculate remaining ttl properly before next acquisition attempt
Fixed - scanInterval
setting check
Fixed - ElementsSubscribeService.resubscribe()
method throws RedissonShutdownException
Fixed - RMap.getAll()
method throws an exception if result of RMap.keySet()
method passed as an argument
Fixed - Redis node random selection doesn't work properly
Fixed - concurrency problem during RLock expiration renewal (thanks to @seakider)
Fixed - RListMultimap
throws too many results to unpack error
Fixed - entry shutdown during cluster slots migration check