redisson/redisson
 Watch   
 Star   
 Fork   
5 days ago
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

11 days ago
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

2025-01-07 18:54:00
redisson

redisson-3.42.0

Feature - listeners support in Spring's CacheConfig object (thanks to @seakider)
Feature - CLIENT LIST command support for Spring Data (thanks to @seakider)
Feature - cluster nodes state added in node ... hasn't been discovered yet error
Feature - onConnectFailed() and onPingFailed() methods with an error argument added to FailedNodeDetector object
Feature - support of "valkey" and "valkeys" schemes in urls

Fixed - RScheduledExecutorService tasks might not be canceled (thanks to @seakider)
Fixed - MASTERDOWN error handling
Fixed - RBloomFilter.contains() should return false if the filter doesn't exist (thanks to @seakider)
Fixed - RRemoteService calls do not throw RemoteServiceTimeoutException, leaving threads stuck (thanks to @seakider)
Fixed - RMap.addAndGet() method doesn't work with MapWriter
Fixed - RScheduledExecutorService tasks are not running on the next executor if the app was killed (thanks to @seakider)
Fixed - RListMultimapReactive.get() and RSetMultimapReactive.get() methods return object with methods which throw exceptions
Fixed - RPriorityBlockingQueue.take() method consumes an element even after the calling thread has been interrupted
Fixed - RExecutorService result futures might be never completed
Fixed - RRemoteService shouldn't allocate a new worker if requestQueue is empty
Fixed - RListMultimapReactive.get() method doesn't work (thanks to @kramer)
Fixed - RListMultimapRx.get() method doesn't work
Fixed - destroy() method doesn't work if called immediately after creation of RDelayedQueue object

2024-12-23 14:45:31
redisson

redisson-3.41.0

Feature - RPermitExpirableSemaphore.getLeaseTime() method added (thanks to @seakider)
Feature - sslVerificationMode setting added

Fixed - RPermitExpirableSemaphore.release(java.util.List) shouldn't release permits if one of them doesn't exist (thanks to @seakider)
Fixed - RTopic listeners leak if they are defined as a lambda
Fixed - RPriorityBlockingQueue.draintTo() method shouldn't resend command on response timeout
Fixed - RandomXoshiro256PlusPlus might block Redisson initialization

2024-12-12 18:01:05
redisson

redisson-3.40.2

Improvement - optimization LRUCacheMap speed by up to 200x

Fixed - Quarkus config parsing with sentinel nodes (thanks to @blacksails)
Fixed - starvation of pub/sub connections may cause a memory leak