Skip to content

Releases: redisson/redisson

redisson-3.42.0

07 Jan 11:41
Compare
Choose a tag to compare

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

23 Dec 07:11
Compare
Choose a tag to compare

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

12 Dec 10:40
Compare
Choose a tag to compare

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

06 Dec 08:33
Compare
Choose a tag to compare

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

03 Dec 10:31
Compare
Choose a tag to compare

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

15 Nov 13:20
Compare
Choose a tag to compare

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

31 Oct 07:10
Compare
Choose a tag to compare

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

30 Oct 11:10
Compare
Choose a tag to compare

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

02 Oct 13:49
Compare
Choose a tag to compare

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

09 Sep 10:31
Compare
Choose a tag to compare

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