Skip to content

Releases: redisson/redisson

redisson-3.23.0

11 Jul 06:02
Compare
Choose a tag to compare

Feature - added RBloomFilter contains() and add() methods with element collection support
Feature - RMapCache and RLocalCachedMap should use sharded pubsub in Redis Cluster 7.0+
Feature - lazyInitialization setting added
Feature - expireEntryIfNotSet(), expireEntries(), expireEntry(), expireEntriesIfNotSet() methods added to RMapCache object
Feature - MapCacheOptions object with removeEmptyEvictionTask() setting introduced. Removes RMapCache eviction task from memory if map is empty upon entries eviction process completion

Breaking change - RMapCache and RLocalCachedMap should use sharded pubsub in Redis Cluster 7.0+
Breaking change - RMapCache object uses MapCacheOptions object

Improvement - RMapCache shouldn't emit events if no listeners added

Fixed - canceling tasks that scheduled with cron expression does not interrupt the thread (thanks to @zcxsythenew)
Fixed - RExecutorService task response should be deleted if task was canceled
Fixed - RedisConnection.close() method has private visibility
Fixed - ConcurrentModificationException occasionally thrown during batch execution
Fixed - StringIndexOutOfBoundsException is thrown if Redis port isn't defined in configuration
Fixed - missed methods implementation of Spring Data Redis module: zRevRangeByLex(), time(TimeUnit), zRemRangeByLex(), zLexCount(), rewriteConfig(), zRangeStoreByLex(), zRangeStoreRevByLex(), zRangeStoreByScore(), zRangeStoreRevByScore(), flushDb(), flushAll(), replicaOf(), replicaOfNoOne()
Fixed - transactional RMap.fastRemove() method throws UnsupportedOperationException
Fixed - RBloomFilter contains() and add() methods don't return accurate results if false probability is high
Fixed - incorrect handling "unknown command" response for RTopic operations
Fixed - RLiveObjectService.delete(class, id) method doesn't delete indexes
Fixed - RMultimapCache throws an exception if entry removed before expiration moment
Fixed - keepPubSubOrder setting isn't applied

redisson-3.22.1

19 Jun 08:42
Compare
Choose a tag to compare

Feature - Apache Tomcat Manager should use sharded pubsub in Redis Cluster 7.0+
Feature - Micronaut Session store should use sharded pubsub in Redis Cluster 7.0+
Feature - RClusteredScoredSortedSet object implemented
Feature - maxDeletedEntryId, entriesAdded, recordedFirstEntryId properties added to StreamInfo object
Feature - inactive property added to StreamConsumer object
Feature - LocalCachedMapOptions.cacheSize = -1 should disable local cache storage

Breaking change - Apache Tomcat Manager and Micronaut Session store now use sharded PubSub in Redis Cluster 7.0+

Fixed - map index entry isn't deleted when RLiveObjectService expires
Fixed - RMultimap.fastRemoveValue() method doesn't delete entry completely if no values retain
Fixed - Default getCache method checks for Object class equality (thanks @agupta-hw)
Fixed - RScoredSortedSet.distributedIterator() doesn't work (regression since 3.21.0)
Fixed - Memory leak if RLocalCachedMap created with storeMode=LOCALCACHE and syncStrategy=UPDATE params
Fixed - wait time handling in RedissonSpinLock (thanks @vladimirkl)
Fixed - java.lang.ClassCastException is thrown by RDequeReactive.pollLast() and RDequeReactive.pollFirst() methods (thanks @wynn5a)
Fixed - RSearch.search() method throws "Parameters must be specified in PARAM VALUE pairs" error
Fixed - RRateLimiter.setRate() method does not behave as expected when RateType is pre_client (thanks @wynn5a)
Fixed - collection fields aren't deleted when RLiveObject expires or is deleted

redisson-3.22.0

05 Jun 08:51
Compare
Choose a tag to compare

Feature - Spring Data Redis 3.1.0 implementation
Feature - Spring Boot 3.1.0 support
Feature - lastEntry(), firstEntry(), pollLastEntries(), pollFirstEntries(), entryIterator(), rankEntry(), revRankEntry() methods added to RScoredSortedSet object
Feature - RCountDownLatch, RLock, RPermitExpirableSemaphore, RSemaphore objects use sharded PubSub in Redis Cluster 7.0+
Feature - slavesSyncTimeout, commandMapper, sslCiphers, sslTrustManagerFactory, sslKeyManagerFactory settings added
Feature - RMultimap.fastRemoveValue() method added
Feature - allowedClasses setting added to SerializationCodec
Feature - entriesRead and makeStream parameters added to RStream.createGroup() method

Breaking change - RCountDownLatch, RLock, RPermitExpirableSemaphore, RSemaphore objects now use sharded PubSub in Redis Cluster 7.0+

Fixed - Expired LiveObjects with RIndex annotations retain indexed data
Fixed - RRingBuffer doesn't implement expire(), expireAt(), delete(), clearExpire() methods properly
Fixed - RLocalCachedMap local cache isn't cleared after instance expiration

redisson-3.21.3

18 May 06:24
Compare
Choose a tag to compare

Fixed - default retryInterval isn't applied to RBatch object
Fixed - RBatches no longer respect the default number of retries (regression since 3.21.1)

redisson-3.21.2

17 May 12:15
Compare
Choose a tag to compare

Feature - RBitSet.set(long[], boolean) method added (thanks to @skasj)

Fixed - Pattern Topic messages are missed/duplicated after failover in cluster if channel starts with __keyspace and __keyevent and subscriptionMode = SLAVE
Fixed - to many pubsub topics may cause memory leak
Fixed - RBatches no longer respect the default number of retries (regression since 3.21.1)

redisson-3.21.1

11 May 09:37
Compare
Choose a tag to compare

Feature - addIfAbsent(), addIfExists(), addIfGreater(), addIfLess(), addAll(), addAllIfAbsent(), addAllIfExist(), addAllIfGreater(), addAllIfLess() methods added to RSetCache object
Feature - SetAddListener, SetRemoveListener, SetRemoveRandomListener added to RSet object
Feature - ScoredSortedSetAddListener, ScoredSortedSetRemoveListener added to RScoredSortedSet object
Feature - MapPutListener, MapRemoveListener added to RMap object
Feature - IncrByListener added to RAtomicDouble and RAtomicLong objects
Feature - RMapCache.getAllWithTTLOnly() method added

Breaking change - RedissonDelayedQueue internal data format changed
Breaking change - RedissonReliableTopic internal data format changed

Improvement - RedissonReliableTopic internal structure optimization

Fixed - RReliableTopic data loss
Fixed - failover isn't handled correctly in some cases
Fixed - BatchOptions.retryAttempts = 0 isn't applied to RBatch object
Fixed - RMap.keySet() throws NPE if CompositeCodec used
Fixed - RediSearch NumericFilter shouldn't set exclusive range by default
Fixed - RediSearch NumericFilter throws NPE
Fixed - RLocalCachedMap.removeListener() method doesn't remove loca cache listeners

redisson-3.21.0

30 Apr 08:50
Compare
Choose a tag to compare

Feature - RediSearch module support
Feature - RSetCache extends RSet interface
Feature - RSemaphore and RPermitExpirableSemaphore objects wait for sync operations completion
Feature - Quarkus 3 support
Feature - LocalCacheUpdateListener and LocalCacheInvalidateListener listeners support added to RLocalCachedMap object
Feature - Tracing support

Improvement - RRateLimiter object uses 128-bit random
Improvement - EVAL script cache applied to RBatch executed in IN_MEMORY mode
Improvement - RMap.keySet() method shouldn't load map values
Improvement - SequentialDnsAddressResolverFactory default concurrencyLevel set to 6

Fixed - RMapCache.fastPut() method doesn't clear ttl and idleTime params if entry reinserted after expiration
Fixed - Unable to find session error arise if Tomcat session was deleted or expired
Fixed - MasterSlaveEntry.getClient() method may throw NPE
Fixed - initialize Decoders LinkedHashMap with correct initial size to avoid unnecessary resizing (thanks @theigl)
Fixed - failover handling may cause temporary connections spike

redisson-3.20.1

28 Mar 07:09
Compare
Choose a tag to compare

Feature - LoadBalancer.getEntry(List<ClientConnectionsEntry>, RedisCommand<?>) method added
Feature - CommandsLoadBalancer added
Feature - NodeType parameter added to ConnectionListener methods

Improvement - command should be redirected to a master node if slave node returns LOADING error

Fixed - closing idle connections causes connection listener to fire
Fixed - Unable to init enough connections amount! error
Fixed - no retry attempts are made for None of slaves were synced error
Fixed - READONLY You can't write against a read only replica.. is thrown after failover in sentinel mode (thanks @alexworkgit)
Fixed - continuously attempts of INFO REPLICATION command execution until attempts limit reached by RLock object after failover
Fixed - Node hasn't been discovered yet error isn't resolved by a new attempt for RBatch and RLock objects
Fixed - RedisClusterDownException, RedisLoadingException, RedisBusyException, RedisTryAgainException, RedisWaitException are thrown by RBatch and RLock objects even if these errors disappeared after new attempts
Fixed - "Unable to init enough connections amount! Only 0 of ... were initialized" error (thanks @alexworkgit)
Fixed - nameMapper isn't applied to some methods of RSet and RScoredSortedSet objects
Fixed - readUnion(), readDiff() and readIntersection() methods of RSet object don't use Redis slave nodes

redisson-3.20.0

01 Mar 12:49
Compare
Choose a tag to compare

Feature - new Multi cluster mode which supports AWS Redis Global Datastore and Azure Redis Cache active-passive replication
Feature - Proxy mode supports RLEC Active-Active databases
Feature - monitorIPChanges setting added for replicated servers mode
Feature - auto-detection of unavailable master in replicated mode (thanks @nicdard)

Fixed - RLock can only be obtained by single redisson node if None of slaves were synced error occurred
Fixed - RSetMultimapReactive.get() method throws ClassCastException
Fixed - Redisson doesn't start in Spring Boot Native image
Fixed - RedissonClient.shutdown(long, long, TimeUnit) method isn't overridden by cluster, replicated and sentinel managers
Fixed - Node hasn't been discovered yet error isn't resolved by a new attempt for RBatch and RLock objects
Fixed - RMapCache.addAndGet() method doesn't handle Long type properly
Fixed - eventLoopGroup, connectionListener and executor settings can't be defined through YAML configuration
Fixed - keySet(), values(), entrySet() methods of RLocalCachedMap return empty result if storeMode == LOCALCACHE

redisson-3.19.3

06 Feb 11:09
Compare
Choose a tag to compare

Fixed - a new attempt should be made on WAIT error during failover
Fixed - Kryo5Codec fails to (de)serialize Object without no-args constructor (regression since 3.19.2)