Releases: redisson/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
Fixed - lock watchdog doesn't renew RLock if an expection has been thrown
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
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)