Changelog History
Page 1
-
v4.5.0 Changes
June 05, 2026🔋 Feature - Array object added (thanks to @lamnt2008)
🔋 Feature - BitVector Store object added
🔋 Feature - Fory lib upgraded to 1.1.0
🔋 Feature - Micronaut 5.0 support
🔋 Feature -readModesetting added forMapOptions,PlainOptions,LocalCachedMapOptionsobjects
🔋 Feature - extendedincrementAndGet()method added toRAtomicLong,RAtomicDouble(thanks to @lamnt2008)
🔋 Feature -contains(),range(),iterator()methods added toRVectorSetobject
🔋 Feature -RMap.keysAsync()method added (thanks to @sywu14)
🔋 Feature -RVectorSetadded toRBatchobject (thanks to @sywu14)💥 Breaking change - map listeners signature changed, field name added (thanks to @lamnt2008)
👌 Improvement - refactor: remove unnecessary boxing of primitives (thanks to @MukjepScarlet)
🛠 Fixed -
RScoredSortedSetRx and Reactive must handle empty results as absent (thanks to @ngyngcphu)
🛠 Fixed -RGeoRx and Reactive must handle empty results as absent (thanks to @lamnt2008)
🛠 Fixed -RSetRx and Reactive must handle empty results as absent (thanks to @lamnt2008)
🛠 Fixed -RVectorSetRx and Reactive must handle empty results as absent (thanks to @lamnt2008)
🛠 Fixed - PingConnectionHandler race condition
🛠 Fixed - UUID type metadata leak in TypedJsonJacksonCodec (thanks to @wushiyuanmaimob)
🛠 Fixed - UUID type inclusion by TypedJsonJackson3Codec
🛠 Fixed - buffer truncation in LZ4CodecV2
🛠 Fixed -WRONGPASSerror on cluster slaves with TLS when password is set at root Config level (regression since 4.4.0) (thanks to @seakider)
🛠 Fixed - release locks for non-existent keys in transactional RMap.fastRemove() (thanks to @sywu14) -
v4.4.0 Changes
May 12, 2026🔋 Feature - Hibernate 7.3.x support
🔋 Feature - GCRA Rate Limiter added (thanks to @bandalgomsu)
🔋 Feature - Non-Reentrant Locks implemented: RLock and RFairLock
🔋 Feature - entries(count), values(count), keySet(count) methods added to RMultimap
🔋 Feature - fallbackLoadingToMaster setting added (thanks to @bandalgomsu)
🔋 Feature - RRateLimiter.set(RateLimiterArgs) method added (thanks to @nhancdt2602)
🔋 Feature - RRateLimiter.update(RateLimiterArgs) method added (thanks to @nhancdt2602)
🔋 Feature - RMapCache.putAll() method added with idleTime parameter
🔋 Feature - RBloomFilter.exists(Collection) method added (thanks to @nhancdt2602)
🔋 Feature - MapIncrListener, DequeAddFirstListener, DequeAddLastListener added (thanks to @nhancdt2602)
🔋 Feature - SetInterStoreListener, SetUnionStoreListener, SetDiffStoreListener, ScoredSortedSetIncrListener, ScoredSortedSetUnionStoreListener, ScoredSortedSetInterStoreListener, ScoredSortedSetDiffStoreListener added
🔋 Feature - profileSearch() and profileAggregate() methods added to RSearch
🔋 Feature - collection field index support for RLiveObject (thanks to @ngyngcphu)
🔋 Feature - dnsMonitoringTimes setting added (thanks to @seakider)
🔋 Feature - RScoredSortedSet.Aggregate.COUNT option added (thanks to @TrietMinh23)
🔋 Feature - RJsonBucket.set() method added with Floating-point homogeneous array precision type (thanks to @TrietMinh23)
Feature - yieldDistanceAs() and shardKRatio() methods added to VectorSimilarityNearestNeighbors params (thanks to @TrietMinh23)
🔋 Feature - RedissonClient.shutdownAsync() method added (thanks to @TrietMinh23)
🔋 Feature - RStream.nack() method added (thanks to @lamnt2008)
🔋 Feature - datastoreMode, primaryDiscoveryMode settings added to Multi Sentinel mode
🔋 Feature - setSyncConfig(), setQueueSyncConfig(), setTopicSyncConfig() methods added to JMS RedissonConnectionFactory👌 Improvement - io_uring migration from Netty incubator to graduated transport (4.2)
👌 Improvement - cleanup: CompletableFutureWrapper of null with generic (thanks to @MukjepScarlet)
👌 Improvement - refactor: replace LinkedList with ArrayList and ArrayDeque (thanks to @MukjepScarlet)
👌 Improvement - refactor: replace anonymous objects with lambdas (thanks to @MukjepScarlet)🛠 Fixed - RReliableQueue doesn't work with nameMapper
🛠 Fixed - RReliablePubSubTopic doesn't work with nameMapper
🛠 Fixed - JCache CacheManager should be run in fallback mode if Redisson config is incorrect
🛠 Fixed - RReliablePubSubTopic might miss messages published at the same moment with listener registration
🛠 Fixed - all named subscriptions in JMS now prefix the subscription name with the client ID (when set)
🛠 Fixed - unsubscribe cross-session active consumer check in JMS
🛠 Fixed - rejecting a second JMS consumer on the same unshared subscription even across different sessions
🛠 Fixed - durable JMS subscription metadata now stores the message selector alongside topic and noLocal
🛠 Fixed - JMSContext.close() MessageListener guard ordering
🛠 Fixed - JCache fallback mode isn't handled during CacheManager acquisition
🛠 Fixed - JCache fallback mode logs
🛠 Fixed - JMS shared non-durable subscription is only removed when the last consumer closes
🛠 Fixed - CancellationException is thrown by RedisExecutor.addMetrics() method
🛠 Fixed - RStreamReactive and RStreamRx should emit empty signal instead of empty Map and List objects
🛠 Fixed - return no singal instead of empty map for stream read/readGroup methods (thanks to @TrietMinh23)
🛠 Fixed - RMap.copy() fails with CROSSSLOT in Redis cluster mode (thanks to @ngyngcphu)
🛠 Fixed - RSearch.readCursor() doesn't work in RESP3
🛠 Fixed - RJsonBucket.getKeys() doesn't work in RESP3
🛠 Fixed - RReadWriteLock cross-instance zombie renewal (thanks to @ngyngcphu)
🛠 Fixed - RLiveObject.findIds() method throws StringIndexOutOfBoundsException (thanks to @ngyngcphu)
🛠 Fixed - RPriorityQueue failed to maintain order under high concurrency with replica read (thanks to @nhancdt2602)
🛠 Fixed - cap RLock timeout to max long when overflow occurs (thanks to @nhancdt2602)
🛠 Fixed - long type should be used as timeouts in lock objects
🛠 Fixed - attempt to unlock lock, not locked by current thread by node id (thanks to @nhancdt2602)
🛠 Fixed - RedisNodeNotFoundException in cluster mode due to incorrect slot calculation for RRemoteService and RExecutorService (thanks to @ngyngcphu)
🛠 Fixed - RKeysRx.getKeys() doesn't return all keys by pattern
🛠 Fixed - RSortedSet comparator without declared constructor can't be used
🛠 Fixed - nameMapper isn't applied if scheduled task was cancelled
🛠 Fixed - nameMapper isn't applied to tasks running by cron schedule
🛠 Fixed - ClassCastException from RemoteServiceResponse to RemoteServiceAck (thanks to @nhancdt2602)
🛠 Fixed - unable to delete Set inside a Transaction if a write operation is queued (thanks to @seakider)
🛠 Fixed - Pub/Sub channels can't be re-authenticated
🛠 Fixed - connection leak in RScheduledExecutorService and RRemoteService
🛠 Fixed - delete() method doesn't work in RedissonTransactionalLocalCachedMap (thanks to @seakider)
🛠 Fixed - empty result for XREADGROUP, BLMPOP, BZMPOP commands isn't handled properly if read timeout occurs
🛠 Fixed - incorrect LocalCachedMap behavior within a transaction (thanks to @seakider)
🛠 Fixed - NullPointerException in MasterConnectionPool if no entries in pool (thanks to @nhancdt2602)
🛠 Fixed - don't cancel connection acquisition for blocking commands if retry timeout reached
🛠 Fixed - ClassCastException in Apache Tomcat Session loading due to unsafe numeric casts (thanks to @leonroars)
🛠 Fixed - cluster detection in single mode (thanks to @bandalgomsu)
🛠 Fixed - RedisURI.toString() leaks password in plaintext in exception message and logs (thanks to @Woongi9)
🛠 Fixed - RSearch.info() method doesn't return index prefixes information -
v4.3.1 Changes
April 06, 2026🔋 Feature -
RQueue.indexOf()method added (thanks to @seakider)👌 Improvement -
RPriorityQueue.poll()should return immediately if queue is empty🛠 Fixed -
CacheEvictdoesn't work correctly inredisson-spring-data-40(thanks to @seakider)
🛠 Fixed - Quarkus throws NPE if Redisson configuration isn't defined
🛠 Fixed - missing @deprecated annotation on RedissonClient.getDelayedQueue() (thanks to @minseok1015)
🛠 Fixed - master connection is frozen during ElastiCache/Valkey upgrade (thanks to @gpsinghsandhu)
🛠 Fixed -RSearch.readCursor()skips rows if total is 0
🛠 Fixed - connection in reconnection state shouldn't be used
🛠 Fixed - cluster detection for a single node connection
🛠 Fixed - comment inconfig.setNettyExecutor()that virtual threads are not recommended (thanks to @seakider)
🛠 Fixed - DNS hostname resolution shouldn't be used for offline slaves in Sentinel mode
🛠 Fixed - Spring Data Listener addition for RedisMessageListenerContainer hangs
🛠 Fixed - LOADING error on slave burns extra retry attempt in batch commands (thanks to @yuxi.jin)
🛠 Fixed - Spring Data Redis Cluster compatibility
🛠 Fixed - Cluster topology error handling (thanks to @ngyngcphu)
🛠 Fixed - AsyncIterator'sCompletionStageis not completed exceptionally, when connection gets read timeout (thanks to @seakider)
🛠 Fixed - unnecessary semicolons in RExecutorService (thanks to @chancehee)
🛠 Fixed -WriteRedisConnectionExceptionis thrown after Cluster failover -
v4.3.0 Changes
March 02, 2026🔋 Feature - JMS API implemented
🔋 Feature - RCuckooFilter object added
🔋 Feature - Local cached Reactive Spring Session implemented
🔋 Feature -RBitSet.bitField()method added (thanks to @bandalgomsu)
🔋 Feature -RBatch.getBloomFilterNative()method added
🔋 Feature -StreamAddArgs.idempotentProducerId()method added
🔋 Feature -hashCode()/equlas()methods added toStreamRangeParamsobject (thanks to @bandalgomsu)
🔋 Feature -Message.getDeliveries()method added👌 Improvement -
tcpKeepAlivesetting istrueby default🛠 Fixed -
RReliablePubSubTopic.setConfigIfAbsent()throws NPE
🛠 Fixed -Message.getCreationTime()returnsnullfor messages stored inRReliableQueue
🛠 Fixed - corruptedInputobject shouldn't be returned to the pool inKryo5Codec
🛠 Fixed - increased char array inKryo5Codecisn't cleared when theInput.reset()method is invoked
🛠 Fixed - traffic burst may blockRRateLimiterindefinitely
🛠 Fixed - attempt to unlock lock, not locked by current thread by node id error (thanks to @seakider)
🛠 Fixed -RTopicPatternresubscription after failover (thanks to @peterhalicky)
🛠 Fixed -RBloomFilterNative'sadd(),exists(),count()return type
🛠 Fixed - Spring DataReactiveKeyCommands.scan()method throws NPE ifcountsetting isn't defined -
v4.2.0 Changes
February 05, 2026🔋 Feature - Spring AI Vector Store implemented
🔋 Feature - AvroJackson3Codec, CborJackson3Codec, IonJackson3Codec, SmileJackson3Codec codecs added
🔋 Feature - RBloomFilterNative object added which covers BF.* commands (thanks to @bandalgomsu)
🔋 Feature - RSearch.hasIndex() method added (thanks @bandalgomsu)
🔋 Feature - Jackson3Codec added for RJsonBucket and RJsonStore objects💥 Breaking change - RSet.containsEach() returns Set (thanks to @bandalgomsu)
🛠 Fixed - RRingBuffer.clear() method shouldn't clear capacity (thanks to @bandalgomsu)
🛠 Fixed - unnecessary attempts for BUSYGROUP error (thanks to @bandalgomsu)
🛠 Fixed - RenewalTask.renewSlots() throws StackOverflowError with many locks (thanks to @subbotinkv)
🛠 Fixed - RExecutorService.scheduleAtFixedRate() method can only be executed once (thanks to @bandalgomsu)
🛠 Fixed - Stream ranges in Spring Data Redis module don't handle bounds (thanks to @bandalgomsu)
🛠 Fixed - UUID serialization by Jackson codecs
Fixed - RBatch with ExecutionMode.REDIS_WRITE_ATOMIC throws NPEs
🛠 Fixed - RJsonBucket.setAndKeepTTLAsync() doesn't work (thanks to @jigneshcoder)
🛠 Fixed - possible RedisTimeoutException and memory Growth after upgrading to Redisson 3.47.0 (thanks to @seakider)
🛠 Fixed - missed redisson-spring-cache and redisson-spring-transaction dependencies for redisson-spring-boot-starter module
🛠 Fixed - RSearch VectorSimilarity param doesn't allow to specify scoreAlias and filter params
🛠 Fixed - javadocs: Config.setCleanUpKeysAmount() description (thanks to @MuriloMarquesSantos)
🛠 Fixed - errors logging improvement (thanks to @GaoSSR)
🛠 Fixed - potential negative index in load balancers (thanks to @GaoSSR)
🛠 Fixed - GraalVM reflection issue in Spring Native (thanks to @GaoSSR)
🛠 Fixed - docs: update deprecation note for RedLock object (thanks to @mykronetix)
🛠 Fixed - passwords encryption JDK 8 compatibility -
v4.1.0 Changes
December 30, 2025🔋 Feature - Local cached Spring Session implemented
🔋 Feature - Hibernate 7.2 module added
🔋 Feature - support for Instant-based expiration inRMapCacheNative(thanks @bandalgomsu)
🔋 Feature -claim()method added toStreamMultiReadGroupArgsandStreamReadGroupArgsforRStreamobject
🔋 Feature -RBucket.getDigest()method added
🔋 Feature - extendedRBucket.compareAndSet()method added
🔋 Feature -RBucket.compareAndDelete()method added
🔋 Feature -RMapCacheNative.putIfExists()methods added with ttl and time arguments
🔋 Feature -RBuckets.setIfAllKeysExist()method added (thanks to @seakider)
🔋 Feature -RBuckets.setIfAllKeysAbsent()method added (thanks to @seakider)
🔋 Feature -RMapCacheNative.putIfAllKeysExist()method added
🔋 Feature -RMapCacheNative.putIfAllKeysAbsent()method added
🔋 Feature - extendedRMapCacheNative.putAll()method added
🔋 Feature -JsonJackson3CodecandTypedJsonJackson3Codeccodecs added
🔋 Feature -RSearch.hybridSearch()method added💥 Breaking change - Spring Cache implementation moved to
redisson-spring-cache/redisson-springmodule (thanks to @seakider)
💥 Breaking change - Spring Transaction implementation moved toredisson-spring-transaction/redisson-springmodule (thanks to @Anubhavagnihotrii)
💥 Breaking change -FstCodec,FuryCodec,MarshallingCodec,SnappyCodecdeprecated codecs have been removed👌 Improvement -
redisson-spring-datais a sub-module ofredisson-spring module
👌 Improvement -redisson-spring-boot-starteris a sub-module ofredisson-spring
👌 Improvement -redisson-spring-cloud-stream-binderis a sub-module ofredisson-spring🛠 Fixed - Spring Data Redis ttl() method returns
0instead of-1whenTimeUnit.SECONDSis used (thanks to @seakider)
🛠 Fixed - incorrect delay calculations byEqualJitterDelayandFullJitterDelayafter 57 attempts
🛠 Fixed -Kryo5Codecfails sometimes ifallowedClassesspecified
🛠 Fixed -PendingEntry.lastTimeDeliveredrenamed todeliveryCount
🛠 Fixed -REDIRECTresponse handling
🛠 Fixed - Spring Boot attempts to start JCache instance
🛠 Fixed - LEAK: ByteBuf.release() was not called before it's garbage-collected after redirect handling (thanks to @seakider) -
v4.0.0 Changes
December 16, 2025🔋 Feature - full-featured Reliable Pub/Sub implemented. Provides topic-subscription-consumer model with message acknowledgment, grouping, seek/replay, Dead Letter Topic, and pull/push consumers
🔋 Feature - Quarkus 3.30.x integration
🔋 Feature - Spring Boot 4.0 integration
🔋 Feature - Spring Data Redis 4.0 module added
🔋 Feature -databasesetting added for Valkey Cluster Mode
🔋 Feature -RSemaphore.releaseIfExists()method added
🔋 Feature -RBatch.getClusteredMapCacheNative()method added
🔋 Feature -RSearch.aggregate()method with Iterable result added (thanks to @seakider)
🔋 Feature -GEOSHAPEfield type added inRSearch#createIndex()method (thanks to @seakider)
🔋 Feature -expire(Duration, names)andexpireAt(Instant, names)methods added (thanks to @bandalgomsu)
🔋 Feature -compute(key, ttl, func)andcomputeIfAbsent(key, ttl, func)methods added toRMapCacheNativeobject
🔋 Feature -RClusteredLocalCachedMapCacheNativeV2,RMapCacheNativeV2,RClusteredMapCacheNativeV2,RLocalCachedMapCacheNativeV2objects added withmaxSizesetting💥 Breaking change - dropped support of deprecated JSON config format
💥 Breaking change - removed deprecatedgetNodesGroup()andgetClusterNodesGroup()methods ofRedissonClientobject
💥 Breaking change - removed deprecated methods ofRGeoobject
💥 Breaking change - removed deprecated methods ofRFutureobject
💥 Breaking change - removed deprecated support of Spring XML configuration
💥 Breaking change - removed support of deprecated custom implementation of Spring Session
💥 Breaking change -RScript.ReturnType.MULTIrenamed toLIST
💥 Breaking change -RScript.ReturnType.STATUSrenamed toSTRING
💥 Breaking change -RScript.ReturnType.INTEGERrenamed toLONG
💥 Breaking change -NameMapper,NatMapperclasses moved toorg.redisson.configpackage
💥 Breaking change -GeoUnit,GeoPosition,GeoOrder,GeoEntryclasses moved toorg.redisson.api.geopackage
💥 Breaking change -StreamConsumer,StreamGroup,StreamInfo,StreamMessageId,PendingEntry,PendingResult,AutoClaimResult,FastAutoClaimResultclasses moved toorg.redisson.api.streampackage👌 Improvement - move auth parameters at Config object level (thanks to @seakider)
👌 Improvement - move nameMapper/commandMapper parameters at Config object level (thanks to @seakider)
👌 Improvement - move ssl parameters to Config object level (thanks to @seakider)
👌 Improvement - use SnakeYAML library directly for Config parsing
👌 Improvement - lz4-java lib updated
👌 Improvement - netty lib updated to 4.2.9
👌 Improvement - Jackson library is now optional
👌 Improvement - move tcp and keepAlive parameters at Config object level (thanks to @seakider)🛠 Fixed -
ObjectParams.retryAttempts()setting is 0 by default
🛠 Fixed - Spring DataRedissonSubscriptionobject doesn't handle cluster failover
🛠 Fixed - locks extension process in LockTask and ReadLockTask (thanks to @Aleksandr-Kiriushkin-Miro)
🛠 Fixed -CROSSSLOTErrors with Proxy Mode Redis Cluster and Locks usage
🛠 Fixed -XREADblocking call may causeClassCastException
🛠 Fixed - an extra key is retained afterRLocalCachedMap.clearLocalCache()method invocation
🛠 Fixed -RedissonNode.start()method throwsAutowiredAnnotationBeanPostProcessor requires a ConfigurableListableBeanFactoryerror
🛠 Fixed - invalid JSON in resource-config.json (thanks to @Anubhavagnihotrii)
🛠 Fixed -RSemaphoreandRLockobjects may wait too long if AOF enabled on Valkey or Redis side
🛠 Fixed -EqualJitterDelayandFullJitterDelaythrow IllegalArgumentException if attempt > 62
🛠 Fixed -RClientSideCachingdoesn't clear parent Redisson instance local cache synchronously
🛠 Fixed - if prefix is configured, some hibernate caching configurations do not take effect (thanks to @seakider)
🛠 Fixed -CommandPubSubDecodermay throw NPE
🛠 Fixed - replicated node timeout handling in Replicated mode (thanks to @johnou)
🛠 Fixed -RBucket.setIfAbsent()is not rolling back on transaction (thanks to @seakider)
🛠 Fixed -get()method ofRListMultimapCacheReactiveandRSetMultimapCacheReactiveobject doesn't work
🛠 Fixed - docs: Correct default value foruseScriptCachesetting (thanks to @lunakv)
🛠 Fixed - javadocs: Rename method create to createIndex in RSearch (thanks to @senocak) -
v3.52.0 Changes
September 25, 2025🔋 Feature - loadCoalescingConcurrency setting added to
RClusteredLocalCachedMapCacheobject
🔋 Feature - implementedEntraIdCredentialsResolverfor authentication using Microsoft Entra ID
🔋 Feature - added support of RStreamXDELEXcommand (thanks to @seakider)
🔋 Feature - added support of RStreamXACKDELcommand (thanks to @seakider)
🔋 Feature - Apache Fory -ForyCodecadded
🔋 Feature - addedRMapCache.compute()method with ttl parameter (thanks to @seakider)
🔋 Feature - addedpollFirst()&pollLast()methods toRSortedSet(thanks to @seakider)
🔋 Feature - password can be specified in config endpoint url for Valkey or Redis cluster
🔋 Feature - addedWITHATTRIBSandEPSILONparameters forVSIMcommand inRVectorSetobject (thanks to @seakider)
🔋 Feature - RRateLimiter.release() method added (thanks to @moil-xm)
🔋 Feature -CredentialsResolver.nextRenewal()method added💥 Breaking change - VectorSimilarArgs.effort() method renamed to VectorSimilarArgs.explorationFactor()
💥 Breaking change - VectorSimilarArgs.effort() method renamed to VectorSimilarArgs.explorationFactor()
💥 Breaking change - VectorAddArgs.effort() method renamed to VectorAddArgs.explorationFactor()
💥 Breaking change - VectorAddArgs.element() renamed to VectorAddArgs.name()
💥 Breaking change - credentialsReapplyInterval setting removed and replaced with CredentialsResolver#nextRenewal()🛠 Fixed -
Attempt to unlock lock, not locked by current thread by node iderror (thanks to @seakider)
🛠 Fixed - cluster failover handling forRBatchobject
🛠 Fixed - inconsistent Command Result Filtering in Spring Data Redis Transactions/Pipelines (thanks to @pengyongqiang)
🛠 Fixed - Spring Data Reactive module:XPENDINGmissing group (syntax error) and NPE on empty pending summary (thanks to @seakider)
🛠 Fixed - NameMapper isn't applied properly forRFairLockobject (thanks to @seakider)
🛠 Fixed - Connection pool should prioritize recently used connections to allow idle connection discard
🛠 Fixed - QUIT command shouldn't be used
🛠 Fixed - ERR unknown command WAITAOF error
🛠 Fixed -RLockobject doesn't work in MultiCluster mode
🛠 Fixed - redisson.license.expiration-year, redisson.license.expiration-month, redisson.license.expiration-day metrics output NaN -
v3.51.0 Changes
August 22, 2025🔋 Feature -
RBitSet.diff(),diffInverse(),andOr(),setExclusive()methods added
🔋 Feature -FieldIndex.svsVamanaVector()vector indexing added (thanks to @seakider)
🔋 Feature -checkMasterLinkStatussetting 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 toRStream.trim()method (thanks to @seakider)
🔋 Feature - added support of KEEPREF, DELREF and ACKED options toRStream.add()method (thanks to @seakider)
Feature - new FIRST_PRIMARY_PUBSUB_NOTIFICATION mode added to Multi ClusterprimaryDiscoveryModesetting
🔋 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 forRStream.range(),RStream.rangeReversed()andRStream.listPending()methods (thanks to @seakider)🛠 Fixed -
RReliableQueuemessage reached delivery limit isn't removed and moved todeadLetterQueue
🛠 Fixed - visibility setting isn't applied if defined inRReliableQueuequeue 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.UPDATEdoesn't work forRLocalCachedJsonStore
🛠 Fixed -RClusteredLocalCachedMap.putIfAbsent()andfastPutIfAbsent()methods don't update the local cache ifstoreCacheMiss = true
🛠 Fixed -RClusteredLocalCachedMap.putIfExists()method doesn't update the local cache ifstoreCacheMiss = true
🛠 Fixed -RClusteredLocalCachedMapCache.putIfExists()andputIfAbsent()methods doesn't update the local cache ifstoreCacheMiss = true
🛠 Fixed -RClusteredLocalCachedMapCache.fastPutIfExists(),putIfExists(),putIfAbsent()andfastPutIfAbsent()methods don't update the local cache ifstoreCacheMiss = true
🛠 Fixed -RClusteredLocalCachedMapCacheNative.fastPutIfExists(),putIfExists(),putIfAbsent()andfastPutIfAbsent()methods don't update the local cache ifstoreCacheMiss = 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 ifstoreCacheMiss = true
🛠 Fixed -RLocalCachedMap.putIfAbsent()method doesn't update the local cache ifstoreCacheMiss = true
🛠 Fixed -IllegalReferenceCountExceptionis thrown when usingRClientSideCaching(thanks to @seakider)
🛠 Fixed - failed Slave at Redisson start moment can't be discovered later in Cluster mode
🛠 Fixed -INFO REPLICATIONcommand timeout logging
🛠 Fixed - graalvm: Classes that should be initialized at run time got initialized during image building (thanks to @seakider)
🛠 Fixed -DNSMonitorlogs 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 usingRLocalCachedMapwithStoreMode.LOCALCACHEforreadAllValues(),readAllMap()andreadAllEntrySet()methods (thanks to @lyrric)
🛠 Fixed - DataInputStream closing to prevent resource leak inRedissonExecutorService.getClassBody()method (thanks to @backstraw)
🛠 Fixed - added missed setters and getters for Config object inRedissonSessionManager(thanks to @jglapa)
🛠 Fixed -RPermitExpirableSemaphore.tryAcquire()doesn't work when acquiring > 1 permit (thanks to @lyrric)
🛠 Fixed -CommandMapperisn't applied properly toRScriptobject (thanks to @lyrric)
🛠 Fixed - synchronization of remote and local Tomcat SSO cache (thanks to @cogniware)
🛠 Fixed -FT.SEARCHcommand is executed only on master nodes (thanks to @pfyod) -
v3.50.0 Changes
June 17, 2025🔋 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