Redisson Versions Save

Redisson - Easy Redis Java client and Real-Time Data Platform. 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.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

redisson-3.24.2

6 months ago

Fixed - IllegalArgument timeout... error is throw during Redisson shutdown
Fixed - Intermittent Exception when creating RLocalCachedMap (regression since 3.24.1)
Fixed - RSearch.aggregate() doesn't apply withCursor() and sortBy() options correctly
Fixed - MOVED redirection loop detected error should be thrown only if both source and target addresses are equal

redisson-3.24.1

6 months ago

Feature - writerRetryAttempts and writerRetryInterval settings added to MapOptions object (thanks to @zzhlhc)
Feature - RSortedSet implements RExpirable
Feature - RBlockingQueue.pollFromAnyWithName() method added
Feature - org.redisson.codec.LZ4CodecV2 codec based on apache commons-compress added
Feature - Redis Cache async methods implementation introduced in Spring 6.1.0
Feature - tcpKeepAliveCount, tcpKeepAliveIdle, tcpKeepAliveInterval, tcpUserTimeout settings added
Feature - subscriptionTimeout setting added

Fixed - RedissonClient.shutdown() method should be completed within timeout (thanks @dgolombek)
Fixed - RBuckets.trySet(), RBuckets.set(), RBuckets.get(), RKeys.touch(), RKeys.unlink(), RKeys.delete(), RKeys.countExists() methods may hang after failover in Redis cluster
Fixed - exceptions aren't wrapped in CacheException for containsKey(), getAll() and removeAll() methods of JCache
Fixed - Command execution timeout for command: (PING)
Fixed - RBucketReactive.delete() method doesn't work in Quarkus Native mode (thanks to @DicksengA)
Fixed - auto configuration with Spring Boot 2.7.x+
Fixed - RSortedSet doesn't work correctly if NameMapper object was specified
Fixed - RPriorityQueue has incorrect lock name if NameMapper object was specified
Fixed - RMapCache.expireEntries() and expireEntry() methods don't update maxIdle parameter properly
Fixed - non-volatile RedisConnection.lastUsageTime field may cause incorrect idle time calculation
Fixed - attempt to unlock lock, not locked by current thread error occurs in rare cases even if RLock.unlock() method called by lock owner thread
Fixed - RCountDownLatch only notifying the first async listener after countdown reaches 0 (thanks to @Sinbios)
Fixed - RStream.trim() and trimNonStrict() methods don't work with Redis 6.2+
Fixed - RReadWriteLock.readLock().isLocked() method returns incorrect result if acquired by writeLock owner thread
Fixed - RedissonClient.getLiveObjectService() method causes an attempt to connect to Redis if lazyInitialization = true

redisson-3.23.5

7 months ago

Feature - failedSlaveNodeDetector setting added to Cluster, Sentinel, Replicated, Master/Slave modes
Feature - module name added to redisson jar (thanks to @KrogerWalt)
Feature - putAll() method with TTL added to RMapCacheRx and RMapCacheReactive objects
Feature - Fallback to TCP in case of a UDP DNS truncation
Feature - RMapCacheV2, Spring RedissonSpringCacheV2Manager and Hibernate RedissonRegionV2Factory objects added in PRO version

Fixed - NPE is thrown by RedissonAutoConfiguration if Spring Boot 3.1+
Fixed - WeightedRoundRobinBalancer doesn't support hostnames
Fixed - NPE is thrown by CommandPubSubDecoder in rare cases
Fixed - during connection initialization a new attempt isn't made for Busy, ClusterDown, TryAgain and Wait Redis errors
Fixed - RJsonBucket.getType() method throws NPE if type is null
Fixed - IllegalStateException is thrown if RedisConnectionDetails object registered in Spring Context with settings for Cluster or Sentinel
Fixed - RSearch can not create Vector field
Fixed - RSearch vector field doesn't support alias

redisson-3.23.4

8 months ago

Feature - methods for multiple permits support added to RPermitExpirableSemaphore object (thanks to @ikss)
Feature - ProtobufCodec codec added (thanks to @dumbbell-5kg)
Feature - WAITAOF command support through BatchOptions.syncAOF() setting
Feature - bgSave(), scheduleBgSave(), save(), getLastSaveTime(), bgRewriteAOF(), size() methods added to RedisNode object

Improvement - RSemaphore and RLock operations should have slave synchronization even if readMode = MASTER and subscriptionMode = MASTER

Fixed - wrong order call of RSearch's FieldIndex tag caseSensitive() and separator() settings
Fixed - RedisConnectionDetails object isn't used for Redisson configuration in Spring Boot 3.1+
Fixed - incorrect slots added,slots removed messages in Redis Cluster mode
Fixed - Tomcat Manager "Session can't be found" message should have debug level
Fixed - RBoundedBlockingQueue can't be deleted if nameMapper was defined
Fixed - RLock isn't unlocked after RTransaction.commit()

redisson-3.23.3

9 months ago

Feature - TransportMode.IO_URING added (thanks to @sgammon)
Feature - LocalCachedMapOptions.useKeyEventsPattern() setting introduced

Improvement - Long as string cache in CommandEncoder (thanks to @tomerarazy)
Improvement - each AddressResolver created by SequentialDnsAddressResolverFactory should share common DnsCache and DnsCnameCache instances
Improvement - RedisURI optimization (thanks to @ikss)

Fixed - codec errors during Quarkus native build
Fixed - extra subscription topic allocation by RLocalCachedMap object (regression since 3.23.2)

redisson-3.23.2

9 months ago

Feature - Micronaut 4.0 integration

Improvement - PubSub channels should be reconnected back to Slave from Master node if SubscriptionMode = SLAVE

Fixed - Setting retryAttempts to 0 causes an exception (regression since 3.23.1)
Fixed - RTopic subscribes only to a single master in cluster if __keyspace or __keyevent channel is defined
Fixed - SlaveConnectionPool no available Redis entries error may arise in some cases
Fixed - StackOverflowError is thrown by AggregationOptions.groupBy() method
Fixed - failedSlaveCheckInterval value should be greater than zero before it can be applied
Fixed - RedissonLocalCachedMap.putAllOperation() method throws ClassCastException if SyncStrategy = UPDATE

redisson-3.23.1

9 months ago

Improvement - the scope of key event subscriptions reduced for RLiveObjectService object. Now it uses key-space channel
Improvement - the scope of key event subscriptions reduced for RLocalCachedMap object. Now it uses key-space channel

Fixed - codecs defined via Spring Native application.properties file can't be recognized during application run
Fixed - retryAttempt setting isn't applied during Redisson startup
Fixed - Quarkus 2/3 native image can't be built
Fixed - unknown property quarkus.redisson.* warnings in quarkus
Fixed - Redisson settings defined in Quarkus application.properties file can't be used in native mode

redisson-3.23.0

10 months ago

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

10 months ago

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