Changelog History
Page 1
-
v3.18.1 Changes
๐ Feature - Spring Data Redis 3.0.0 module added
๐ Fixed - PubSub subscription in cluster sometimes doesn't apply to all nodes
๐ Fixed - command replies don't match if connection pool size < 10 and at least one command failed
๐ Fixed -RLock
throwsCancellationException
continuously
๐ Fixed -None of slaves were synced
error is thrown after failover during RLock acquisition
๐ Fixed - AWS Elasticache cluster failover
๐ Fixed -hRandFieldWithValues()
andhRandField()
methods of Spring Data Redis module throwClassCastException
๐ Fixed -trySetPermitsAsync()
method of RPermitExpirableSemaphore object shouldn't allow to overwrite the number of permits if value == 0 (thanks @kscaldef)
๐ Fixed -RKeys
object doesn't usenameMapper
๐ Fixed - connection leak after master failover -
v3.18.0 Changes
๐ Feature - Tomcat 10.1.x support
๐ Feature - labels support for RTimeSeries object
๐ Feature - compatibility with Spring Boot 3 (thanks @olivierboudet)
๐ Feature - RxJava and Reactive interfaces for RLocalCachedMap object
๐ Feature - local cache support for JsonBucket object๐ Improvement - StringCodec now implements JsonCodec
๐ Fixed -
RDoubleAdder
andRLongAdder
objects don't work withnameMapper
๐ Fixed -RBlockingQueue
methods should return null if negative timeout defined
๐ Fixed -RLocalCachedMap.clearLocalCacheAsync()
method shouldn't retain semaphore after invocation
๐ Fixed - Spring Data Redis methods weren't implemented:zRandMember()
,zRandMemberWithScore()
,zPopMin()
,bZPopMin()
,zPopMax()
,bZPopMax()
,zMScore()
,zDiff()
,zDiffWithScores()
,zDiffStore()
,zInter()
,zInterWithScores()
,zUnion()
,zUnionWithScores()
,hRandField()
,hRandFieldWithValues()
,copy()
,lMove()
,bLMove()
,lPop()
,rPop()
,sMIsMember()
,getEx()
,getDel()
๐ Fixed - attempts to connect to the failed master after failover in cluster mode
๐ Fixed -RMapCache
MapEntryListener
doesn't work withnameMapper
๐ Fixed -RJsonBucket.getKeys()
method doesn't use path parameter
๐ Fixed -RRateLimiter.getConfig().getRate()
throws NPE if it doesn't exist (thanks @Tanky-Zhang)
๐ Fixed -RTransaction
objects should be the same instances on each "get..." call
๐ Fixed -RScheduledExecutorService
cron triggers fire continuously for hours for some time zones (regression since 3.16.5)
๐ Fixed -RSortedSet.add()
throws NPE (thanks @yuwei)
๐ Fixed -RKeysReactive.getKeysByPattern()
method isn't giving all entries if downstream consumer is slow
๐ Fixed - "Unable to unfreeze entry" errors in sentinel mode
๐ Fixed -JsonBucket.compareAndSet()
method with null as update value deletes whole object
๐ Fixed - Redis Cluster topology scanned partially in case of DNS resolution error
๐ Fixed - Slave nodes failed to pass complete initialization shouldn't be added as nodes
๐ Fixed - ByteBuf leaks when one of multiple parameters can't be encoded
๐ Fixed -SearchDomainUnknownHostException
is thrown occasionally -
v3.17.7 Changes
๐ Improvement - Failed connection ping isn't taken in account in Redis slave health check
๐ Fixed - RScheduledExecutorService cron expression doesn't support year
๐ Fixed -replaceValues()
method ofRListMultimap
andRSetMultimap
throws exception for empty collection
๐ Fixed - RedissonBaseLock throws NPE after failover
๐ Fixed - Spring Data Redisevalsha()
method doesn't use key for Redis node routing in Cluster mode
๐ Fixed - DNS change isn't detected in replicated mode
๐ Fixed -RCollectionReactive.addAll()
method is executed without subscription
๐ Fixed -RKeysAsync.countExists()
method throws errors in cluster mode
๐ Fixed - Spring Data Redis reactive setIfAbsent should returnfalse
on error (thanks @zhuangzibin)
๐ Fixed - Micronaut native image configuration
๐ Fixed - RBatchReactive execution stuck forever ifuseScriptCache = true
๐ Fixed - NameMapper is applied incorrectly to RBoundedBlockingQueue object
๐ Fixed - incorrect IPv6 conversion
๐ Fixed - Spring Boot Module ignores username parameter set via Spring Redis config
๐ Fixed - SpringBoot yaml configuration parsing errors shouldn't be suppressed -
v3.17.6 Changes
๐ Feature - Helidon 3.0 support
๐ Feature - ability to specifyMapWriterAsync
andMapLoaderAsync
inMapOptions
object๐ Improvement - log output string expanded to 1000 characters by default
๐ Fixed -
RBuckets
methods don't usenameMapper
๐ Fixed - PingConnectionHandler should close channel on RedisLoadingException, RedisTryAgainException, RedisClusterDownException, RedisBusyException
๐ Fixed - Invocation timeout isn't applied forRTopic.removeListenerAsync()
methods
๐ Fixed -WriteBehind
task isn't stopped afterRMap.destroy()
method invocation
๐ Fixed - Connection pinging works incorrectly if new connections were created in pool
๐ Fixed - "SlaveConnectionPool no available Redis entries" error occurs in Cluster caused by early excluding of master node from nodes for reading
๐ Fixed - Permanent blocking calling threads -
v3.17.5 Changes
๐ Feature -
touch()
,unlink()
anddelete()
methods implemented for transactionalRSetCache
andRSet
objects
๐ Feature - transactionalRBucket
,RMap
,RMapCache
,RSetCache
,RSet
objects supportexpire()
,expireAt()
andclearExpire()
methods
๐ Feature -ExecutorOptions.idGenerator()
setting added
๐ Feature - methods with task id added to RExecutorService interface๐ Fixed - duplicate subscriptions with RedisMessageListenerContainer in Spring Data Redis 2.7
๐ Fixed -NameMapper
applied twice to transactionalRBucket
๐ Fixed - some Quarkus environment variables clear all Redisson properties set through config file
๐ Fixed -RJsonBucket.delete()
method doesn't work
๐ Fixed -RExecutorService.submitAsync(Callable, long, TimeUnit)
method throws ClassCastException (thanks @xyqshi) ๐ Fixed - Lock synced slaves check
๐ Fixed - reactive scripting commands throw ClassCastException if result is list of list
๐ Fixed -RBatch.getJsonBucket()
method should return RJsonBucketAsync interface -
v3.17.4 Changes
๐ Feature - RJsonBucket object added for
JSON.*
commands support
๐ Feature -RFunction
andRShardedTopic
objects added toRBatch
๐ Fixed - continuous "Unable to unfreeze entry" error in Sentinel mode
๐ Fixed -nameMapper
setting isn't applied toRExecutorService
andRScheduledExecutorService
๐ Fixed - channel write exception may lead to wrong commands order
๐ Fixed - don't connect to sentinel resolved by DNS if it's not included in result of SENTINEL SENTINELS command
๐ Fixed -RScript.load()
method shouldn't use failed Redis nodes
๐ Fixed -RPermitExpirableSemaphore.acquireAsync()
method hangs until leaseTimeout occurs. (regression since 3.16.8)
๐ Fixed - use 60 seconds polling instead of take command for RRemoteService responses
๐ Fixed -eval()
andevalSha()
methods of Spring Data Redis ReactiveScriptingCommands object throw IndexOutOfBoundsException
๐ Fixed - expired entries eviction process is limited to 5000 per call
๐ Fixed - sharded topic isn't resubscribed after channel reconnection
๐ Fixed - execution of blpop command leads to reconnection -
v3.17.3 Changes
๐ Feature - Hibernate 6 support
๐ Improvement - amount of created connections in parallel reduced to 2 for better stability
๐ Fixed - Spring Boot Starter doesn't start with Spring Boot 2.7
๐ Fixed - RRateLimiter doesn't allow to set expiration time of permits and values -
v3.17.2 Changes
๐ Feature -
RScoredSortedSet.replace()
method added
๐ Feature - Spring Data Redis 2.7.0 module added
๐ Feature -RPatternTopic.removeAllListenersAsync()
method added
๐ Feature -RShardedTopic
object added (requires Redis 7.0+)
๐ Feature - allow to specify username and password in redis connection url
๐ Feature - JCache data partitioning with local cache support๐ Fixed - "Can't add slave" exceptions after fail over in cluster mode
๐ Fixed - "Unable to acquire subscription" error after connection interruption
๐ Fixed - JCache hangs forever when getting value from cache with useScriptCache=true
๐ Fixed -RMap.merge()
method hangs if MapLoader specified
๐ Fixed -FairLock
thread counter should start from 1 (thanks to @thisiswanghy) -
v3.17.1 Changes
๐ Feature - transient fields support for LiveObjects to avoid data serialization
๐ Feature -removeAllListenersAsync()
method added toRTopic
object
๐ Feature -transactionAware
setting added to RedissonSpringCacheManager๐ Improvement - amount of created connections in parallel reduced to 5, for better stability
๐ Fixed -
RedissonReactiveClient.getMultilock()
method should accept RLockReactive objects
๐ Fixed -RedissonRxClient.getMultilock()
method should accept RLockRx objects
๐ Fixed - don't close connection on error response during topology scan
๐ Fixed - SET command should be an idempotent operation
๐ Fixed - MasterSlaveConnectionManager throws ClassCastException if host unknown
๐ Fixed -RReadWriteLock
renewal doesn't work if writeLock released before readLock then both were acquired
๐ Fixed - Spring Data Redis module. Scan In cluster mode, other nodes cannot be scanned
๐ Fixed -RReliableTopic
object throws "attempt to compare nil with number" error
๐ Fixed -RedissonSpinLock.tryLock()
method returns false instead of true if the remaining wait time is negative
๐ Fixed - an error should be thrown ifmerge()
,compute()
,computeIfAbsent()
andcomputeIfPresent()
ofRMap
used in batch
๐ Fixed - Unable to specify timezone in CronSchedule object
๐ Fixed -RMapCache.destroy()
method throws NPE
๐ Fixed -RLock.tryLock()
method throwsCancellationException
๐ Fixed - Unable to connect to Redis server error is thrown due to NPE
๐ Fixed -RBlockingQueue.pollLastAndOfferFirstTo()
throwsClassCastException
if result is empty
๐ Fixed - internal AsyncSemaphore doesn't skip canceled tasks in the same thread
๐ Fixed -RLocalCachedMap.getAll()
method doesn't respectstoreCacheMiss
setting
๐ Fixed - 0 value for waitTime and leastTime isn't handled correctly by RMultiLock object
๐ Fixed - Spring Data Redis module. RedissonConnection.execute() method doesn't invoke overloaded methods correctly -
v3.17.0 Changes
๐ Feature -
RFunction
object added (requires Redis 7.0+)
๐ Feature -pollLastEntriesFromAny()
andpollFirstEntriesFromAny()
methods added to RScoredSortedSet object (requires Redis 7.0+)
๐ Feature -expireIfSet()
,expireIfNotSet()
,expireIfGreater()
andexpireIfLess()
methods added to RExpirable interface (requires Redis 7.0+)
๐ Feature -checkLockSyncedSlaves
setting added
๐ Feature -getAndExpire
andgetAndClearExpire()
methods added toRBucket
object (requires Redis 6.2.0+)
๐ Feature -pollFirstFromAny()
andpollLastFromAny()
methods with timeout and count added toRScoredSortedSet
object (requires Redis 7.0+)
๐ Feature -pollFirst()
andpollLast()
methods with timeout and count added toRScoredSortedSet
object (requires Redis 7.0+)
๐ Feature -addAllIfLess()
,addAllIfGreater()
,addAllIfExist()
,addAllIfAbsent()
methods added toRScoredSortedSet
object
๐ Feature -RExpirable.expire(Duration)
method added
๐ Feature -RExpirable.expireTime()
method added (requires Redis 7.0+)
๐ Feature -range()
,rangeReversed()
,entryRange()
,entryRangeReversed()
methods with limit parameter added toRTimeSeries
object
๐ Feature -TransactionalOperation.syncSlaves
setting added
๐ Feature -pollFirstFromAny()
andpollLastFromAny()
methods added to RBlockingQueue object (requires Redis 7.0+)๐ Improvement - read-only cached scripts should be executed on slaves (requires Redis 7.0+)
๐ Improvement - SORT_RO command is used for slave nodes (requires Redis 7.0+)
๐ Improvement - decrease size of allocated data by RPermitExpirableSemaphore๐ Fixed -
RedissonLocalCachedMap.clearLocalCache()
method throws IllegalArgumentException
๐ Fixed - RedissonMultiLock doesn't work properly with RedissonSpinLock
๐ Fixed - SlaveConnectionPool no available Redis entries error occurs in Cluster mode
๐ Fixed -RKeys.deleteByPattern()
method does not always delete keys correctly
๐ Fixed -expireAt(Instant)
method of RExpirableReactive andRExpirableRx
interfaces doesn't work
๐ Fixed - wrong detection of added and removed slots in Redis Cluster mode
๐ Fixed -RScoredSortedSet.addIfGreater()
andRScoredSortedSet.addIfLess()
methods always return false
๐ Fixed - Spring Data Connection in multi mode causes thread stuck (regression since 3.16.7)
๐ Fixed - Sentinel username setting is not applied (thanks to @nicolas-tg-ch)
๐ Fixed - RTimeSeries doesn't handle same values for different timestamps
๐ Fixed - Quarkus environment variables aren't parsed correctly
๐ Fixed - check expiration before release in RPermitExpirableSemaphore (thanks to @randomVariable2)
๐ Fixed - RedisTimeoutException: Command execution timeout for command: (PING) (regression since 3.16.3)
๐ Fixed - wrong wait time calculation in RedissonMultiLock lock method causes deadlock
๐ Fixed - RLocalCachedMap throws NPE if cache update listener receives message during init
๐ Fixed - AsyncRemoteProxy throws Redisson is shutdown exception
๐ Fixed - RedisClusterNode.clusterSlots() method throws Exception