Releases: redisson/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
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
redisson-3.40.1
Improvement - Netty pending tasks amount report in timeout exceptions
Fixed - Redis or Valkey hostname parsing
Fixed - NoClassDefFoundError
is thrown during run with Spring Boot 3.4.0 in GraalVM native mode
Fixed - RTopic
and RShardedTopic
fail to resubscribe after node's DNS record change (regression since 3.27.0)
redisson-3.40.0
Feature - metrics added to RClusteredTopic
, RReliableTopic
, RClusteredReliableTopic
, RShardedTopic
, RJsonStore
and RLocalCachedJsonStore
objects
Feature - Spring Data Redis 3.4.x module added
Feature - Spring Boot upgraded to 3.4.0
Feature - setIfLess()
and setIfGreater()
methods added to RAtomicDouble
and RAtomicLong
objects (thanks to @seakider)
Feature - RMultimap.fastReplaceValues()
method added (thanks to @davidreis97)
Fixed - IPV6 uris with braces are parsed incorrectly
Fixed - minCleanUpDelay setting isn't applied during the first run of the EvictionTask
Fixed - master node shouldn't be changed on new ip addition for AWS Serverless endpoint
Fixed - Quarkus native build requires Snappy library
Fixed - Quarkus 3.14+ compatibility
Fixed - RBitSet.length()
method returns unexpected value and caused RedisException in some case (thanks to @seakider)
Fixed - TypedJsonJacksonCodec
doesn't catch Exception (thanks to @lyrric)
redisson-3.39.0
Feature - partitioning implementation for RTopic
object
Feature - partitioning implementation for RShardedTopic
object
Feature - partitioning implementation for RReliableTopic
object
Feature - ZStandard compression codec added (ZStdCodec)
Feature - ability to register listeners for RListMultimap
and RSetMultimap
objects
Feature - ability to register listeners for RTimeSeries
object
Fixed - possible race-condition in RMapCache.computeIfAbsent()
method
Fixed - possible race-condition in computeIfAbsent()
, computeIfPresent()
methods of RMap object
Fixed - RMapCache.computeIfAbsentAsync()
method isn't implemented
Fixed - use CursorId in ScanIteration to avoid long overflow in Spring Data 3.3 implementation (thanks to @vlastikcz)
Fixed - unable to cancel a task created by RExecutorService.scheduleAtFixedRate()
method (thanks to @zcxsythenew)
Fixed - potential LocalCache memory leak if useObjectAsCacheKey = true (thanks to @lehuuthanh5)
Fixed - EntryListener is not working on Turkish language Windows 10
Fixed - Redisson shutdown exception is thrown during background process of expired Tomcat sessions
Fixed - some methods of Reactive and RxJava API don't work in GraalVM native image
Fixed - RTransactionRx
and RTransactionReactive
don't work in GraalVM native image
Fixed - JsonJacksonCodec
doesn't work in GraalVM native image
Fixed - NPE is thrown if RExecutorService
task submitted in GraalVM native image
Fixed - RObject.rename()
method does not replace an existing structure in cluster mode
redisson-3.38.1
Fixed - Kryo codec upgraded to 5.6.2 for JDK 8 compatibility (thanks to @Wujiaxuan007)
Fixed - pollAsync() and removeAsync() methods of RPriorityQueue and RPriorityDeque objects aren't guarded properly with lock
Fixed - Spring Cache Cacheable(sync)
annotation loads value multiple times for reactive types or completableFuture
redisson-3.38.0
Feature - Local cache for Live Object Service support
Feature - RClientSideCaching object added. Client side caching through RESP3 protocol
Feature - Tomcat 11 support
Feature - RBatch.getSearch()
method added (thanks to @pfyod)
Feature - RedissonClient.getMultiLock()
method added for locking on objects (thanks to @lyrric)
Feature - RPatternTopic.removeListener()
accepts multiple ids
Feature - LocalCachedMapOptions.useTopicPattern()
setting added
Feature - InetAddress and SocketAddress serialization added to Kryo5Codec
Breaking change - RLongAdder and RDoubleAdder topic channel name has been renamed
Improvement - timeToLive parameter renamed to keepAliveTime for RRateLimiter.trySetRate()
and setRate()
methods (thanks to @lyrric)
Fixed - lazyInitialization=true
doesn't work in cluster mode (regression since 3.27.0)
Fixed - Spring Cache @Cacheable(sync) doesn't work with reactive types or completableFuture
Fixed - Pub/Sub connections randomly disconnecting (regression since 3.26.0) (thanks to @Wujiaxuan007)
Fixed - RLiveObjectService.persist()
and merge()
methods, when called with multiple arguments, return detached objects
Fixed - RJsonBucketReactive
and RJsonBucketRx
use Reactive Types as arguments
Fixed - ClassNotFoundException
is thrown when a LiveObject expires
Fixed - Micronaut native image build
Fixed - Quarkus native image build
Fixed - RSearch.info()
method throws an exception on infinity values (thanks to @iamtakingiteasy)
redisson-3.37.0
Feature - findCommon()
and findCommonLength()
methods added to RBucket
object
Feature - RMapCache.computeIfAbsent()
method with TTL parameter added (thanks to @lyrric)
Feature - Apache Tomcat RedissonSessionManager.setConfig()
method added (thanks to @jglapa)
Feature - LocalCachedMapOptions.useObjectAsCacheKey()
setting added (thanks to @lehuuthanh5)
Feature - trySetRate()
and setRate()
methods with TTL parameter added to RRateLimiter
object
Feature - RKeys.getKeys()
method with type parameter added
Improvement - RRemoteService
method calls optimization
Fixed - Spring Data Redis method RedisSetCommands.isMember()
doesn't work
Fixed - Spring Data Redis xcaim()
and xClaimJustId()
methods don't use getMinIdleTime() parameter (thanks to @jinia91)
Fixed - retainAll()
and containsAll()
methods of RSet
object throw "too many results to unpack" error
Fixed - ServiceManager.execute()
method may hang in case of exception
Fixed - RedissonNode.shutdown()
method doesn't stop executors
Fixed - listeners reattach process should be stopped on Redisson shutdown
Fixed - BiHashMap
usage removed
Fixed - 100% CPU usage by CommandsQueue in rare cases
Fixed - ProtobufCodec
doesn't work with CompositeCodec
redisson-3.36.0
Feature - Kryo5Codec
useReferences
setting added
Feature - RListMultimapCacheNative
and RSetMultimapCacheNative
objects added. Require Redis 7.4+
Feature - AggregationOptions.sortBy()
method with withCount
parameter added (thanks to @pfyod)
Feature - allowedClasses
setting added to FuryCodec
Feature - addIfAbsent(Map)
method added to RSetCache
object (thanks to @lyrric)
Improvement - 'hmget' should be instead of 'hget' in RMapCache.getAllWithTTLOnly()
method
Fixed - RedisExecutor throws "Failed to submit a listener notification task" error during shutdown
Fixed - Keep the jmockit version in the plugin consistent with that in the dependencies (thanks to @lyrric)
Fixed - hostname after comma in Redis Cluster topology isn't parsed
Fixed - drainToAsync()
method returns an incorrect value (thanks to @seakider)
Fixed - numeric cast in CommandDecoder
Fixed - RLiveObject
value shouldn't be deleted during index update
Fixed - RSetCache.addAllIfAbsent()
method doesn't work
Fixed - missed getSetMultimapCache()
and getListMultimapCache()
methods in RBatchReactive
object
Fixed - missed getMapCacheNative()
method in RBatch
object
Fixed - MapValueDecoder
throws NPE
Fixed - EnumMap
type handling by Kryo5Codec
Fixed - Kryo5Codec
registrationRequired
setting replaced with allowedClasses
Fixed - JCache eviction task isn't removed on close()
method invocation
Fixed - missed destroy()
method for RListMultimapCache
and RSetMultimapCache
objects