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
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)
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
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)
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
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
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
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
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
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