redisson/redisson
 Watch   
 Star   
 Fork   
25 days ago
redisson

redisson-3.51.0

Feature - RBitSet.diff(), diffInverse(), andOr(), setExclusive() methods added
Feature - FieldIndex.svsVamanaVector() vector indexing added (thanks to @seakider)
Feature - checkMasterLinkStatus setting added for Cluster mode (thanks to @seakider)
Feature - RKeys.migrate() method added with auth support (thanks to @lyrric)
Feature - added support of KEEPREF, DELREF and ACKED options to RStream.trim() method (thanks to @seakider)
Feature - added support of KEEPREF, DELREF and ACKED options to RStream.add() method (thanks to @seakider)
Feature - new FIRST_PRIMARY_PUBSUB_NOTIFICATION mode added to Multi Cluster primaryDiscoveryMode setting
Feature - new metrics "responses.busy", "responses.wait", "responses.tryagain", "responses.loading", "responses.ask", "responses.moved" added

Improvement - AbstractCacheMap.removeExpiredEntries() method optimization (thanks to @lyrric)
Improvement - equals/hashcode implementation added to TransactionOptions
Improvement - Cluster manager uses IP if hostname can't be resolved (thanks to @seakider)
Improvement - new API for RStream.range(), RStream.rangeReversed() and RStream.listPending() methods (thanks to @seakider)

Fixed - RReliableQueue message reached delivery limit isn't removed and moved to deadLetterQueue
Fixed - visibility setting isn't applied if defined in RReliableQueue queue config Fixed - license key can't be read if defined as JVM option
Fixed - RClusteredLocalCachedMapCache.putIfAbsent() method sends incorrect local cache update date (regression since 3.49.0)
Fixed - RLocalCachedMapCacheV2.fastPutIfExists() method doesn't work (regression since 3.49.0)
Fixed - SyncStrategy.UPDATE doesn't work for RLocalCachedJsonStore
Fixed - RClusteredLocalCachedMap.putIfAbsent() and fastPutIfAbsent() methods don't update the local cache if storeCacheMiss = true
Fixed - RClusteredLocalCachedMap.putIfExists() method doesn't update the local cache if storeCacheMiss = true
Fixed - RClusteredLocalCachedMapCache.putIfExists() and putIfAbsent() methods doesn't update the local cache if storeCacheMiss = true
Fixed - RClusteredLocalCachedMapCache.fastPutIfExists(), putIfExists(), putIfAbsent() and fastPutIfAbsent() methods don't update the local cache if storeCacheMiss = true
Fixed - RClusteredLocalCachedMapCacheNative.fastPutIfExists(), putIfExists(), putIfAbsent() and fastPutIfAbsent() methods don't update the local cache if storeCacheMiss = true
Fixed - RReliableQueue.get(Codec, String) method doesn't work
Fixed - Multi Cluster mode doesn't detect failed clusters
Fixed - null is printed in logs during connection in Cluster mode
Fixed - RBitSet.and(), not(), or(), xor() methods return void instead of number
Fixed - RScheduledExecutorService.deregisterWorkers() method throws an exception (thanks to @seakider)
Fixed - RLocalCachedMap.putIfExists() method doesn't update the local cache if storeCacheMiss = true
Fixed - RLocalCachedMap.putIfAbsent() method doesn't update the local cache if storeCacheMiss = true
Fixed - IllegalReferenceCountException is thrown when using RClientSideCaching (thanks to @seakider)
Fixed - failed Slave at Redisson start moment can't be discovered later in Cluster mode
Fixed - INFO REPLICATION command timeout logging
Fixed - graalvm: Classes that should be initialized at run time got initialized during image building (thanks to @seakider)
Fixed - DNSMonitor logs a warning (thanks to @seakider)
Fixed - race condition during elements eviction in LFU cache (thanks to @lyrric)
Fixed - when acquire by RPermitExpirableSemaphore it may fail in some case (thanks to @lyrric)
Fixed - Direct byte buffer leak when using RLocalCachedMap with StoreMode.LOCALCACHE for readAllValues(), readAllMap() and readAllEntrySet() methods (thanks to @lyrric)
Fixed - DataInputStream closing to prevent resource leak in RedissonExecutorService.getClassBody() method (thanks to @backstraw)
Fixed - added missed setters and getters for Config object in RedissonSessionManager (thanks to @jglapa)
Fixed - RPermitExpirableSemaphore.tryAcquire() doesn't work when acquiring > 1 permit (thanks to @lyrric)
Fixed - CommandMapper isn't applied properly to RScript object (thanks to @lyrric)
Fixed - synchronization of remote and local Tomcat SSO cache (thanks to @cogniware)
Fixed - FT.SEARCH command is executed only on master nodes (thanks to @pfyod)

2025-06-17 16:53:46
redisson

redisson-3.50.0

Feature - Apache Tomcat SSO integration (thanks to @cogniware and @iamrakesh)
Feature - Valkey and Redis url may contain password only (thanks to @noxvost)

Fixed - Redisson can't connect to Azure Managed Redis Cluster (thanks to @beetlebugorg)
Fixed - commons-codec and json-smart libs updated
Fixed - IllegalArgumentException: tickDuration : 0 (expected: > 0) error is thrown

2025-06-04 16:10:00
redisson

redisson-3.49.0

Feature - RClusteredScoredSortedSetRx, RClusteredScoredSortedSetReactive interfaces added for RClusteredScoredSortedSet object
Feature - iteratorAsync() methods added to RSet object (thanks to @seakider)
Feature - readAllKeySetAsync(pattern), readAllValuesAsync(pattern) and readAllEntrySetAsync() methods added to RMap interface (thanks to @seakider)
Feature - Redisson PRO license key can be defined through redisson.pro.key key stored in Valkey or Redis

Fixed - local cache update in putIfAbsent(), fastPutIfExists() and fastPutIfAbsent() methods of RLocalCachedMapCache and RClusteredLocalCachedMapCache objects
Fixed - RLocalCachedMapCacheNative object in storeMode = LOCALCACHE may allocate extra connections and miss updates if syncStrategy = UPDATE
Fixed - RLocalCachedMapCacheNative.putIfAbsent() method doesn't update local cache
Fixed - RClusteredLocalCachedMapCacheNative object in storeMode = LOCALCACHE may allocate extra connections and miss updates if syncStrategy = UPDATE
Fixed - RClusteredLocalCachedMapCacheNative.putIfAbsent() method doesn't update local cache
Fixed - RClusteredLocalCachedMapCache object in storeMode = LOCALCACHE may allocate extra connections and miss updates if syncStrategy = UPDATE
Fixed - RLocalCachedMapCache object in storeMode = LOCALCACHE may allocate extra connections and miss updates if syncStrategy = UPDATE
Fixed - put(), fastPutIfAbsent(), putIfAbsent() methods of RLocalCachedMapCacheV2 in storeMode = LOCALCACHE may allocate extra connections and miss updates if syncStrategy = UPDATE
Fixed - RLocalCachedJsonStore object in storeMode = LOCALCACHE may allocate extra connections and miss updates if syncStrategy = UPDATE
Fixed - missed classes added to the Hibernate 7 module
Fixed - retryAttempts setting value limit (thanks to @seakider)
Fixed - RObject.rename() method doesn't work in batch mode if the new and old name slots match
Fixed - minTimeout value calculation for HashedWheelTimer object
Fixed - codec, loader and writer settings can't be parsed in Micronaut cache yaml configuration
Fixed - environment variables for Redisson configuration can't be used with Micronaut 4

2025-05-27 18:14:11
redisson

redisson-3.48.0

Feature - retryDelay and reconnectionDelay settings added, allowing to define a delay strategy. Available implementations: FullJitterDelay, EqualJitterDelay, DecorrelatedJitterDelay and ConstantDelay. Default is EqualJitterDelay
Feature - Vector Set object added
Feature - Spring Data Redis 3.5.0 implementation
Feature - Hibernate 7 support added

Improvement - RClusteredMapCache eviction process optimization

Fixed - RLocalCachedMap with storeMode = LOCALCACHE may allocate extra connections and miss updates if syncStrategy = UPDATE
Fixed - RClusteredLocalCachedMap with storeMode = LOCALCACHE may allocate extra connections and miss updates if syncStrategy = UPDATE
Fixed - RLocalCachedMapCacheV2 with storeMode = LOCALCACHE may allocate extra connections and miss updates if syncStrategy = UPDATE
Fixed - RLocalCachedMapCacheV2 local cache updates
Fixed - QueueTransferTask throws NPE
Fixed - unknown command error is thrown if RLock object is used on Valkey Serverless deployment
Fixed - the count parameter of RMap.valuesAsync() method should not affect result
Fixed - NOSCRIPT error is thrown after failover by RLock methods
Fixed - RESP3 boolean value parsing

2025-05-21 13:33:13
redisson

redisson-3.47.0

Feature - ReliableFanout object added
Feature - processingMode setting added to RReliableQueue config
Feature - listeners added to RReliableQueue object
Feature - metrics added to RReliableQueue object
Feature - disableOperation() and enableOperation() methods added to RReliableQueue object
Feature - get() and getAll() methods added to RReliableQueue object
Feature - pollBatchSize, visibilityTimeout, negativeAcknowledgeDelay consumer settings added to Spring Cloud Stream Binder
Feature - RReliableQueue implements RDestroyable interface
Feature - readDiffEntries(), readIntersectionEntries(), readUnionEntries() methods added to RScoredSortedSet (thanks to @seakider)
Feature - valkeyCapabilities setting added

Improvement - script logging in error message if useScriptCache = true
Improvement - RReliableQueue data structure optimization

Fixed - RClusteredLocalCachedMap.fastPut() method causes netty buffer leak if storeMode = LOCALCACHE
Fixed - RReliableQueue.size() method result shouldn't include delayed messages amount
Fixed - Spring Cache.getNativeCache() returns incorrect instance
Fixed - exessive connections creation for RClusteredLocalCachedMap and RClusteredLocalCachedMapCache if 'reconnectionStrategy = LOAD'
Fixed - readUnion(), readIntersection(), readDiff() methods of RSetCache throw exception
Fixed - New connection opened for each write operation after failover in Sentinel mode (thanks to @seakider)
Fixed - Micronaut 4.x connects only to a single node
Fixed - RedisURI(String) constructor doesn't set the hashCode
Fixed - Spring Data Redis addMessageListener() method hangs if multiple listeners added to the same topic or pattern
Fixed - detection of WAIT and WAITAOF commands availability
Fixed - JCacheManager does not remove cache instance from map when calling closeCache() (thanks to @seakider)
Fixed - starvation of pub/sub connections may cause a memory leak
Fixed - RMap.loadAll() method may hang in Cluster
Fixed - None of slaves were synced exception is thrown
Fixed - Spring Data Redis ReactiveZSetCommands.zadd() default param (thanks to @lookroot)

2025-04-29 19:15:57
redisson

redisson-3.46.0

Feature - Reliable Queue object added. RDelayedQueue and RBoundedBlockingQueue have been deprecated
Feature - fairLockWaitTimeout Redisson setting added (thanks to @seakider)
Feature - credentialsReapplyInterval Redisson setting added (thanks to @seakider)
Feature - support for JDK Atomic objects in Kryo5Codec (thanks to @bergander)
Feature - WorkerOptions.tasksInjector setting added (thanks to @zzhlhc)

Breaking change - Spring Cloud Stream Binder queue implementation replaced with RReliableQueue object
Breaking change - RedisPubSubConnection.removeListener() and RedisPubSubConnection.addListener() methods signature changed

Improvement - useScriptCache setting is true by default
Improvement - Add check for keepAliveTime and rateInterval in RRateLimiter (thanks to @shrink)

Fixed - data leak in RReliableTopic (thanks to @Chengzhi1803472613)
Fixed - PubSub stops working after Redis restart in sentinel mode (thanks to @seakider)
Fixed - CommandAsyncService.syncedEval() method doesn't update correctly available secondary nodes
Fixed - expire-after-write and expire-after-access settings aren't applied to async Micronaut Cache
Fixed - RBatch exception object doesn't contain suppressed exceptions
Fixed - RRemoteService fails to operate if codec defined as an anonymous inner class
Fixed - Watchdog fails to renew on reentry locks (thanks to @seakider)
Fixed - RKeys.unlinkByPattern() and RKeys.deleteByPattern() methods don't handle keys with non-ASCII characters
Fixed - RenewalTask throws IndexOutOfBoundsException

2025-03-17 20:47:22
redisson

redisson-3.45.1

Fixed - Issue with asynchronous Micronaut @Cacheable methods (thanks to @seakider)
Fixed - RExecutorService.submitAsync() throws a script error (thanks to @seakider)
Fixed - isSlaveNotUsed() method isn't called if a new slave node added to Redis Cluster (thanks to @seakider)
Fixed - error thrown by RLiveObject running with AWS ElastiCache Serverless Valkey
Fixed - RLocalCachedMap SYNC strategy doesn't work with fastPutIfExists(), fastPutIfAbsent() methods (thanks to @seakider)
Fixed - RDelayedQueue object cannot get anything when server run a long time (thanks to @seakider)
Fixed - LockEntry throws NPE
Fixed - Hibernate region_prefix configuration doesn't apply to key redisson-hibernate-timestamp (thanks to @seakider)
Fixed - MasterConnectionPool might throw an NPE
Fixed - Inconsistent MaxInactiveInterval Setting in Sessions in multi-node (thanks to @seakider)
Fixed - Out of Memory error
Fixed - a new attempt should be made on ERR WAIT error during failover (thanks to @seakider)

2025-02-21 14:34:11
redisson

redisson-3.45.0

Feature - added max-size setting for Quarkus Cache Feature - RedissonSpringCacheV2Manager and RedissonSpringLocalCachedCacheV2Manager support maxSize setting Feature - RedissonRegionV2Factory and RedissonLocalCachedV2RegionFactory in Hibernate support eviction.max_entries setting Feature - RedissonCacheV2 and RedissonLocalCachedCacheV2 in MyBatis support maxSize settings Feature - maxSize setting support by redisson.caches-v2.* and redisson.local-caches-v2.* cache configurations in Micronaut Feature - RMapCacheV2.setMaxSize() method added Feature - RClusteredLocalCachedMapCacheNative object added with data partitioning, local cache and native eviction Feature - RedissonClusteredSpringLocalCachedCacheNativeManager object added with data partitioning, local cache and native eviction Feature - added Micronaut redisson.clustered-local-caches-native.* cache with data partitioning, local cache and native eviction Feature - added Hibernate RedissonClusteredLocalCachedNativeRegionFactory cache with data partitioning, local cache and native eviction Feature - added Quarkus CLUSTERED_LOCALCACHE_NATIVE cache with data partitioning, local cache and native eviction Feature - added MyBatis RedissonClusteredLocalCachedCacheNative cache with data partitioning, local cache and native eviction Feature - added JCache implementation with local cache and advanced eviction Feature - added JCache implementation with local cache and native eviction Feature - added JCache implementation with data partitioning, local cache and native eviction Feature - ability to set eviction mode via Spring CacheConfig object (thanks to @JKord) Feature - RBitSet.get(long...) method added (thanks to @seakider) Feature - RBlockingQueue.pollLastFromAnyWithName() method added (thanks to @seakider) Feature - getReferenceCount(), getAccessFrequency(), getInternalEncoding() methods added to RObject interface (thanks to @seakider) Feature - RExecutorService.deregisterWorkers() method added
Feature - valuesAsync() and entrySetAsync methods added to RMap interface (thanks to @seakider)

Improvement - validate PARAMS in RSearch.search() method (thanks to @seakider)

Fixed - delete() method doesn't work in non-clustered mode for RLocalCachedJsonStore, RLocalCachedMapCacheV2 objects Fixed - clustered local cached JCache doesn't use storeCacheMiss setting
Fixed - JCache with native and advanced eviction don't work in cluster mode Fixed - clustered local cached JCache.put() method may throw a CROSSLOT error
Fixed - put() method of local cached JCache instance may not update local cache
Fixed - remove() and removeAll() methods of local cached JCache instance don't update the local cache of other instances Fixed - putAll() and clear() methods of JCacheV2 may not work Fixed - RedissonClusteredSpringCacheNativeManager properties validation
Fixed - RedissonSpringLocalCachedCacheV2Manager properties validation
Fixed - RedissonSpringLocalCachedCacheNativeManager can't be created using a yaml configuration file
Fixed - RedissonSpringLocalCachedCacheNativeManager throws an ClassCastException if cache wasn't defined in the configuration
Fixed - RLocalCachedMapCache.getAll() method may return an incorrect result
Fixed - RLocalCachedMapCacheNative.getAll() method may return an incorrect result
Fixed - missed implementation of expireEntriesIfNotSet(), expireEntriesIfLess() and expireEntriesIfGreater() methods of RClusteredMapCacheNative Fixed - missed implementation of expireEntriesIfLess() and expireEntriesIfGreater() methods of RLocalCachedMapCacheNative Fixed - RJsonStore.isExists() method doesn't work Fixed - JCacheV2 entry name generation fixed Fixed - RMapCacheV2.isExists() method optimization Fixed - RedissonSpringLocalCachedCacheV2Manager throws an ClassCastException if cache wasn't defined in the configuration Fixed - RedissonSpringLocalCachedCacheV2Manager can't be created using a yaml configuration file Fixed - RLocalCachedMapCacheV2, RLocalCachedJsonStore, RSetV2, RSetCacheV2, JCacheV2, RMapCacheV2 don't work if useScriptCache = true Fixed - LUA error when RedissonMapCache.putAll(Map) is invoked with listeners (thanks to @max.huang)
Fixed - ProtobufCodec compatibility with the latest protobuf version (thanks to @zzhlhc)
Fixed - RFairLock attempt to compare nil with number (thanks to @seakider) Fixed - incorrect parsing of PubSubType.UNSUBSCRIBE command with non-English locale
Fixed - RRemoteExecutorService expiration sorted set is growing indefinitely (thanks to @seakider) Fixed - Quarkus shutdown process fails if version 3.18 or higher
Fixed - notifyUpdate() and notifyInvalidate() methods of LocalCacheListener might throw NPE
Fixed - RBatchRx may work incorrectly if useScriptCache = true

2025-01-27 16:17:58
redisson

redisson-3.44.0

Feature - native eviction implemented for JCache API
Feature - advanced eviction implemented for JCache API
Feature - RKeyAsync.getKeysAsync() method added (thanks to @seakider)
Feature - added commandsMap setting to CommandsLoadBalancer object
Feature - added regex setting to RandomLoadBalancer and RoundRobinLoadBalancer objects to filter nodes
Feature - Unix Domain Socket (UDS) support for a single mode through "redis+uds://" or "valkey+uds://" scheme
Feature - lockWatchdogBatchSize setting added

Fixed - RBuckets.get() method doesn't use nameMapper in single mode
Fixed - valkeys scheme can't be used in Sentinel mode
Fixed - closed channel detection during connection ping process
Fixed - RSearch throws an error if nocontent param defined (thanks to @seakider)
Fixed - RemovedListener is invoked incorrectly by JCache.getAll() method
Fixed - synthetic class shouldn't be allowed to be used as a comparator for RPriorityQueue objects
Fixed - master node address isn't resolved through NatMapper object in Sentinel mode (tnanks @aramperes)
Fixed - STOPWORDS 0 can't be defined during RSearch index creation
Fixed - RScript.evalSha() method doesn't work in cluster mode
Fixed - task id duplication check added to RScheduledExecutorService methods Fixed - failover handling in Sentinel mode
Fixed - Micronaut Session.put() method doesn't remove an entry if value = null
Fixed - RReadWriteLock.unlock() method doesn't respect the lock owner

2025-01-13 17:19:11
redisson

redisson-3.43.0

Feature - RObservable interface for listeners added for RLock objects (thanks to @seakider)

Fixed - RExecutorService workers stop working (regression since 3.42.0) (thanks to @seakider)
Fixed - RLocalCacheMap.remove() method hangs if called inside a transaction
Fixed - poll methods of RTimeSeries and RScoredSortedSet objects return null instead of empty lists
Fixed - RSet.containsEach() method returns null instead of empty list
Fixed - RLocalCachedMap.fastRemove() method may throw NPE if storeMode = LOCALCACHE