Redisson Versions Save

Redisson - Easy Redis Java client with features of In-Memory Data Grid. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache ...

redisson-3.28.0

3 weeks ago

Feature - Multi Sentinel mode implementation
Feature - RLocalCachedMapCacheV2 object implemented with effecient partitioning and advanced entry eviction
Feature - graceful shutdown in quarkus (thanks to @naah69)

Improvement - RLongAdder and RDoubleAddder should use sharded topic if possible
Improvement - reduced CPU and Memory consumption by ClusterConnectionManager.getLastPartitonsByURI() method
Improvement - RedisURI.hashCode() caching to reduce CPU consumption
Improvement - shutdown check added in RTopic.removeListener() method

Fixed - incorrect detection of sharded pubsub support
Fixed - RBatch does not work with RKeys.randomKeyAsync() method (thanks to @wynn5a)
Fixed - unresolved Redis node hostname in cluster mode affects cluster topology scan
Fixed - MASTER nodes aren't used if readMode = MASTER_SLAVE
Fixed - RLock, RFencedLock, RReadWriteLock miss unlock messages and wait a defined timeout before a next attempt or hang
Fixed - RSemaphore, RPermitExpirableSemaphore miss release messages and wait a defined timeout before a next attempt or hang
Fixed - incorrect value of RLongAdder.sum() and RDoubleAddder.sum() methods if multiple Adder instances for the same Redisson object are used
Fixed - CountDownLatch.await() method may throw NPE
Fixed - ExecutionException handling in RExecutorService, RLock, RPermitExpirableSemaphore, RSemaphore objects
Fixed - ConcurrentModificationException is thrown on RedissonSession save method if readMode = MEMORY
Fixed - Spring Data Redis zPopMin() and zPopMax() methods don't work (thanks to @bimslab)

redisson-3.27.2

1 month ago

Feature - RShardedTopic.countSubscribers() method implemented
Feature - RedissonMultiLock implements isHeldByThread() and isHeldByCurrentThread() methods

Fixed - Multiple locking of RLock reset remainTimeToLive to config default
Fixed - exception thrown by natMapper is not shown in logs
Fixed - OSGi jdk.net package import should be optional
Fixed - ServiceManager.resolveAll() method throws NPE
Fixed - RObject.addListenerAsync() method throws UnsupportedOperationException
Fixed - StatusListener doesn't work with RShardedTopic
Fixed - NPE is thrown in cluster mode if slave node added
Fixed - continuously reconnecting to a removed slave node in cluster mode
Fixed - incorrect handling of TrackingListener removal
Fixed - FlushListener receives duplicate events
Fixed - SlotsDecoder throws NPE on empty result
Fixed - Clash between RedissonCache and Spring (6.1+) Cache interface methods
Fixed - RedissonClient.shutdown() method hangs at serviceManager.getShutdownLatch() invocation
Fixed - "Failed to submit a listener notification task. Event loop shut down?" error caused by PingConnectionHandler
Fixed - JsonCodecWrapper isn't cached properly

redisson-3.27.1

2 months ago

Feature - added TrackingListener support to RList, RQueue, RDeque, RBlockingQueue, RBlockingDeque, RDelayedQueue, RRingBuffer objects
Feature - addListener(), random() methods added to RLexSortedSet object

Improvement - show log warning "DNS TCP fallback on UDP query timeout disabled" if Netty version is lower 4.1.105
Improvement - ChannelName.toString() conversion optimization

Fixed - retryInterval and retryAttempts settings aren't applied in case of 'READONLY You can't write against a read only replica.' error
Fixed - RRemoteService may cause CPU spike after Master failover
Fixed - FlushListener causes ClassCastException
Fixed - TrackingListener causes ClassCastException
Fixed - RedissonSetCache.addIfAbsentAsync() uses incorrect argument for zadd (thanks @fooooxxxx)

redisson-3.27.0

2 months ago

Feature - client tracking support. TrackingListener is available for RBucket, RStream, RScoredSortedSet, RSet, RMap and RBucket objects
Feature - added RKeys.addListener() method to register global listeners
Feature - FlushListener added to track flushdb/flushall command invocation
Feature - Kryo5Codec constructor with registrationRequired parameter added
Feature - nettyExecutor setting added
Feature - enable DNS TCP fallback when UDP query timeout for RoundRobinDnsAddressResolverGroupFactory and SequentialDnsAddressResolverFactory

Improvement - cache result of INFO REPLICATION command for RLock objects

Fixed - Spring Data Redis ReactiveKeyCommands.pExpire() method throws an exception
Fixed - NPE is thrown by RedisExecutor.handleError() method
Fixed - sharded pubsub detection for Apache Tomcat Session Manager, RMapCache and RLocalCachedMap objects
Fixed - Redisson's threads aren't shutdown if Redis node address isn't defined
Fixed - NPE is thrown while creating RLocalCacheMap object without WriteMode value
Fixed - incorrect RESP3 protocol parsing causes SlaveConnectionPool no available Redis entries error
Fixed - repeated new connections with AWS Elasticache serverless
Fixed - internal LRUCacheMap object throws ConcurrentModificationException

redisson-3.26.1

2 months ago

Feature - enable DNS TCP fallback on UDP query timeout (thanks to @hellojukay)
Feature - StreamMessageId.autogenerateSequenceId() method added (thanks to @mrmx)
Feature - RLockReactive.isHeldByThread() method added (thanks to @sanail)

Fixed - missed implementation of Spring Data Redis ReactiveStringCommands.bitField() method
Fixed - Spring Data Redis opsForCluster().randomKey() method throws UnsupportedOperationException
Fixed - JCache.close() method throws IllegalStateException if statistics enabled
Fixed - doubled connections to the master node if readMode = MASTER_SLAVE or there are no slave nodes
Fixed - RSearch.delDict() and RSearch.addDict() methods throw NPE
Fixed - connection ping handler doesn't use commandTimeout setting
Fixed - repeated new connections with AWS Elasticache serverless
Fixed - RLock throws ERR unknown command 'wait' with AWS Elasticache serverless
Fixed - RSearchReactive.dropIndex() method doesn't call onComplete() handler

redisson-3.26.0

3 months ago

Feature - ability to specify retryInterval, retryAttempts, timeout settings per Redisson object. Please refer to the documentation
Feature - LocalCachedMapOptions.expirationEventPolicy setting added
Feature - StreamAddListener, StreamCreateConsumerListener, StreamCreateGroupListener, StreamRemoveConsumerListener, StreamRemoveGroupListener, StreamRemoveListener, StreamTrimListener listeners added for RStream object

Fixed - Spring Data Redis RedissonConnection.setCommands() method returns null
Fixed - continuously reconnecting to a removed slave node in cluster mode
Fixed - EntryExpiredListener isn't invoked by RMapCache instance in Redis Cluster 7+ and if nameMapper is defined
Fixed - Skipped slave up ... error is thrown in Sentinel mode if nodes use IPv6
Fixed - NPE is thrown when adding or removing shards in ElastiCache
Fixed - RAtomicDouble, RAtomicLong, RMap, RScoredSortedSet, RSet listeners aren't removed properly
Fixed - connection isn't reconnected on WRONGPASS Redis error
Fixed - connection timeout during Redisson start ignores connections amount
Fixed - RSearch.search() method doesn't execute query with aliases properly
Fixed - FCALL_RO command isn't used when RFunction method called with FunctionMode.READ parameter
Fixed - IllegalReferenceCountException is thrown when canceling a method call
Fixed - Redis scan cursor exceed Long.MAX_VALUE in AWS Elasticache
Fixed - internal ServiceManager.calcSHA() method should use UTF-8 encoding by default

redisson-3.25.2

4 months ago

Fixed - SSL connection can't be established

redisson-3.25.1

4 months ago

Improvement - JDK21 Virtual Threads compatibility

Fixed - EvictionTask keeps running even after destroy() method called
Fixed - Sprint Data Redis throws Subscription registration timeout exceeded
Fixed - Sprint Data Redis RedisMessageListenerContainer.addMessageListener() method hangs if called after container start
Fixed - NPE is thrown if lazyInitialization = true
Fixed - PriorityQueue methods may hang due to unreleased lock after exception
Fixed - RMap.getAll() method throws IndexOutOfBoundsException
Fixed - natMapper isn't applied to slaves and master nodes at start in Sentinel mode
Fixed - method invocation hangs after failover if retryInterval = 0
Fixed - transactional Map and MapCache keySet method returns inconsistent state
Fixed - Multilock lock method doesn't work properly with non-MILLISECONDS TimeUnit

redisson-3.25.0

4 months ago

Feature - RESP3 protocol support. protocol setting added Feature - Spring Data Redis 3.2.0 implementation Feature - RSetCacheV2, RSetV2 objects with more effecient partitioning in Cluster added in PRO version

Improvement - SLF4j updated to 2.0.9 version

Fixed - RFunction/RScript keys parameter accepts only String values Fixed - IP address instead of hostname is used in sentinel mode with SSL connection Fixed - Resources leak in Version.logVersion() method Fixed - RLiveObjectService.persist() method with varargs hangs in cluster mode Fixed - Redisson connection process may hang at start in some cases Fixed - EntryExpiredListener isn't invoked by RMapCache instance in Redis Cluster 7+ Fixed - slave node in sentinel mode can't be recovered if it's a master node Fixed - JsonJacksonCodec fails to serialize Throwable on Java17 (thanks to @tomjankes) Fixed - RBlockingDeque.move() throws an exception for empty result Fixed - RScoredSortedSet.pollFirstEntries(count) and pollLastEntries(count) methods return wrong result Fixed - BZMPOP command timeout isn't applied Fixed - getBlockingDeque(), getDeque(), getPriorityDeque(), getPriorityBlockingDeque() throw NoClassDefFoundError if JDK version < 21 Fixed - RLocalCachedMap.containsKey() method does not work properly if storeCacheMiss = true Fixed - RedissonRemoteService exceptions handling (thanks to @mrmx) Fixed - RSearch.info() method throws NumberFormatException Fixed - HttpSessionListener.sessionDestroyed() method isn't called if Tomcat Session deleted by the node which didn't create it Fixed - LZ4CodecV2 isn't compatible with LZ4Codec Fixed - RSearch GroupBy.reduce alias isn't applied (thanks to @arjunE1395)

redisson-3.24.3

6 months ago

Feature - Helidon 4.0 integration

Fixed - ERR invalid expire time error is thrown during RLock.unlock() call if retryAttempts = 0