All Versions
Latest Version
Avg Release Cycle
27 days
Latest Release

Changelog History
Page 1

  • v3.17.0 Changes

    ๐Ÿ”‹ Feature - RFunction object added (requires Redis 7.0+)
    ๐Ÿ”‹ Feature - pollLastEntriesFromAny() and pollFirstEntriesFromAny() methods added to RScoredSortedSet object (requires Redis 7.0+)
    ๐Ÿ”‹ Feature - expireIfSet(), expireIfNotSet(), expireIfGreater() and expireIfLess() methods added to RExpirable interface (requires Redis 7.0+)
    ๐Ÿ”‹ Feature - checkLockSyncedSlaves setting added
    ๐Ÿ”‹ Feature - getAndExpire and getAndClearExpire() methods added to RBucket object (requires Redis 6.2.0+)
    ๐Ÿ”‹ Feature - pollFirstFromAny() and pollLastFromAny() methods with timeout and count added to RScoredSortedSet object (requires Redis 7.0+)
    ๐Ÿ”‹ Feature - pollFirst() and pollLast() methods with timeout and count added to RScoredSortedSet object (requires Redis 7.0+)
    ๐Ÿ”‹ Feature - addAllIfLess(), addAllIfGreater(), addAllIfExist(), addAllIfAbsent() methods added to RScoredSortedSet object
    ๐Ÿ”‹ Feature - RExpirable.expire(Duration) method added
    ๐Ÿ”‹ Feature - RExpirable.expireTime() method added (requires Redis 7.0+)
    ๐Ÿ”‹ Feature - range(), rangeReversed(), entryRange(), entryRangeReversed() methods with limit parameter added to RTimeSeries object
    ๐Ÿ”‹ Feature - TransactionalOperation.syncSlaves setting added
    ๐Ÿ”‹ Feature - pollFirstFromAny() and pollLastFromAny() methods added to RBlockingQueue object (requires Redis 7.0+)

    ๐Ÿ‘Œ Improvement - read-only cached scripts should be executed on slaves (requires Redis 7.0+)
    ๐Ÿ‘Œ Improvement - SORT_RO command is used for slave nodes (requires Redis 7.0+)
    ๐Ÿ‘Œ Improvement - decrease size of allocated data by RPermitExpirableSemaphore

    ๐Ÿ›  Fixed - RedissonLocalCachedMap.clearLocalCache() method throws IllegalArgumentException
    ๐Ÿ›  Fixed - RedissonMultiLock doesn't work properly with RedissonSpinLock
    ๐Ÿ›  Fixed - SlaveConnectionPool no available Redis entries error occurs in Cluster mode
    ๐Ÿ›  Fixed - RKeys.deleteByPattern() method does not always delete keys correctly
    ๐Ÿ›  Fixed - expireAt(Instant) method of RExpirableReactive and RExpirableRx interfaces doesn't work
    ๐Ÿ›  Fixed - wrong detection of added and removed slots in Redis Cluster mode
    ๐Ÿ›  Fixed - RScoredSortedSet.addIfGreater() and RScoredSortedSet.addIfLess() methods always return false
    ๐Ÿ›  Fixed - Spring Data Connection in multi mode causes thread stuck (regression since 3.16.7)
    ๐Ÿ›  Fixed - Sentinel username setting is not applied (thanks to @nicolas-tg-ch)
    ๐Ÿ›  Fixed - RTimeSeries doesn't handle same values for different timestamps
    ๐Ÿ›  Fixed - Quarkus environment variables aren't parsed correctly
    ๐Ÿ›  Fixed - check expiration before release in RPermitExpirableSemaphore (thanks to @randomVariable2)
    ๐Ÿ›  Fixed - RedisTimeoutException: Command execution timeout for command: (PING) (regression since 3.16.3)
    ๐Ÿ›  Fixed - wrong wait time calculation in RedissonMultiLock lock method causes deadlock
    ๐Ÿ›  Fixed - RLocalCachedMap throws NPE if cache update listener receives message during init
    ๐Ÿ›  Fixed - AsyncRemoteProxy throws Redisson is shutdown exception
    ๐Ÿ›  Fixed - RedisClusterNode.clusterSlots() method throws Exception

  • v3.16.8 Changes

    ๐Ÿ›  Fixed - Quarkus redisson config fails to load in cluster mode with one node address
    ๐Ÿ›  Fixed - registered RReliableTopic listener doesn't get old messages
    ๐Ÿ›  Fixed - pubsub channel isn't released if subscription timeout occurred
    ๐Ÿ›  Fixed - Quarkus Redisson config should be read at runtime
    ๐Ÿ›  Fixed - RTopic channels aren't unsubscribed
    ๐Ÿ›  Fixed - race condition causes Subscription timeout
    ๐Ÿ›  Fixed - RMapCache.readAllKeySet() doesn't use MapKey codec
    ๐Ÿ›  Fixed - Spring Data Redis RedissonConnection doesn't implement lpos command (thanks @woodyDM)
    ๐Ÿ›  Fixed - master host isn't formatted into compressed format for IPV6 addresses in Sentinel mode
    ๐Ÿ›  Fixed - Spring Data Redis restore() method throws Busy exception

  • v3.16.7 Changes

    ๐Ÿ‘Œ Improvement - MessageListener should be annotated by @FunctionalInterface

    ๐Ÿ›  Fixed - RScript.scriptLoad() doesn't load script into Slave nodes
    ๐Ÿ›  Fixed - Spring Data RedissonConnection eval should use ByteArrayCodec (thanks @woodyDM)
    ๐Ÿ›  Fixed - RSet.distributedIterator() and RScoredSortedSet.distributedIterator() methods throw script error
    ๐Ÿ›  Fixed - synced slaves amount is not checked in RLock object
    ๐Ÿ›  Fixed - race condition during hostname resolution in sentinel mode which may cause slave shutdown
    ๐Ÿ›  Fixed - error should be thrown if slaves aren't defined in MasterSlave mode and readMode != MASTER
    ๐Ÿ›  Fixed - master node shouldn't be initialized as slave in single mode
    ๐Ÿ›  Fixed - can't find node error arise in replicated mode

  • v3.16.6 Changes

    ๐Ÿ›  Fixed - race condition causes wrong detection of failed slaves in Replicated mode. (regression since 3.16.5)

  • v3.16.5 Changes

    ๐Ÿ”‹ Feature - countIntersection() method added to RSet object
    ๐Ÿ”‹ Feature - added reactive interface for RListMultimapCache and RSetMultimapCache objects
    ๐Ÿ”‹ Feature - sentinelUsername setting added
    ๐Ÿ”‹ Feature - added distributed iterator (thanks @Danila Varatyntsev)
    ๐Ÿ”‹ Feature - added Spring Data Redis 2.6.0 support

    ๐Ÿ›  Fixed - RedissonConnectionFactory.getReactiveConnection() method of Spring Data Redis isn't compatible with Redis cluster mode
    ๐Ÿ›  Fixed - Mybatis RedissonCache should search redisson.yaml config at root package
    ๐Ÿ›  Fixed - Can't find host in slaves! error after failover with a new IP of master host
    ๐Ÿ›  Fixed - failed slaves aren't detected in Replicated mode
    ๐Ÿ›  Fixed - get operation before put may cause inconsistent state of local cache
    ๐Ÿ›  Fixed - RList.remove(object, count) throws exception if multiple objects were removed (thanks @cartermc24)
    ๐Ÿ›  Fixed - RLocalCachedMap.delete() method clears local cache asynchronously
    ๐Ÿ›  Fixed - IdleConnectionWatcher shouldn't close RedisPubSubConnection if it's in subscribed state
    ๐Ÿ›  Fixed - SSL is not used for Sentinel master host
    ๐Ÿ›  Fixed - update sync strategy of LocalCachedMap objects shouldn't apply updated value twice to instance of update source
    ๐Ÿ›  Fixed - JCache dependency updated to 1.1.1
    ๐Ÿ›  Fixed - Sentinel master-host = ? setting isn't handled properly during slave check
    ๐Ÿ›  Fixed - RBuckets.trySet() method throws CROSSSLOT error (thanks to @deerRule)
    ๐Ÿ›  Fixed - DNS monitor makes a new attempt to change master while current attempt wasn't finished

  • v3.16.4 Changes

    ๐Ÿ”‹ Feature - sentinelsDiscovery setting added
    ๐Ÿ”‹ Feature - quarkus.redisson.file setting added to redisson-quarkus module to define external Redisson config file

    ๐Ÿ‘Œ Improvement - optimization of ClusterConnectionManager.checkSlaveNodesChange() and ClusterConnectionManager.checkMasterNodesChange() methods

    ๐Ÿ›  Fixed - master change monitoring task in Replicated mode stops execution if it's invoked before the dns change
    ๐Ÿ›  Fixed - RemoteService cannot be called if requestId is null (thanks to @jimichan)
    ๐Ÿ›  Fixed - codec is not applied to RBuckets.set() method in non Cluster mode
    ๐Ÿ›  Fixed - recovered slave shouldn't be added again in Redis Cluster mode
    ๐Ÿ›  Fixed - releaseConnection method may cause StackOverflowError
    ๐Ÿ›  Fixed - MOVED response with hostname isn't handled properly
    ๐Ÿ›  Fixed - RStream.readGroup() method throws IndexOutOfBoundsException if group has a message without data
    ๐Ÿ›  Fixed - NPE in CommandPubSubDecoder
    ๐Ÿ›  Fixed - RExecutorService may execute same task twice at the same time
    ๐Ÿ›  Fixed - dependencies for testing should use appropriate scope
    ๐Ÿ›  Fixed - RPriorityQueue.add() method uses async method
    ๐Ÿ›  Fixed - don't retry non-idempotent operations which were successfully sent
    ๐Ÿ›  Fixed - RMapCache.fastRemove throws RedisException: too many results to unpack
    ๐Ÿ›  Fixed - RRateLimiter decreases limit over the time in highly concurrent environment
    ๐Ÿ›  Fixed - don't PING connection if it's in use

  • v3.16.3 Changes

    ๐Ÿ‘Œ Improvement - RBuckets.get() method should group keys by slot in Redis Cluster mode
    ๐Ÿ‘Œ Improvement - RBatch result decoding optimization

    ๐Ÿ›  Fixed - RExecutorService, RRemoteService execution may hang if connection used for tasks pooling was interrupted
    ๐Ÿ›  Fixed - RBatch with skipResult() option affects result of other commands (regression since 3.16.1)
    ๐Ÿ›  Fixed - connection leak (regression since 3.16.1)
    ๐Ÿ›  Fixed - getBuckets().set() method throws CROSSSLOT error (thanks to @mikawudi)
    ๐Ÿ›  Fixed - RedissonMapCache.addListener() method throws NPE
    ๐Ÿ›  Fixed - master-host of Slave node isn't resolved in Sentinel mode
    ๐Ÿ›  Fixed - interrupted RLock.tryLock() method keeps renewing lock indefinitely (thanks to @Cesarla)
    ๐Ÿ›  Fixed - don't ping connection if it's in use
    ๐Ÿ›  Fixed - natMapper isn't applied to resolved Sentinel and Cluster hosts

  • v3.16.2 Changes

    ๐Ÿ”‹ Feature - Micronaut 3.0 integration
    ๐Ÿ”‹ Feature - added batched merge() method to RLiveObjectService interface
    ๐Ÿ”‹ Feature - resolve hostnames used in Redis Cluster topology
    ๐Ÿ”‹ Feature - resolve hostnames used in Redis Sentinel topology
    ๐Ÿ”‹ Feature - added batched addLast() and addFirst() methods to RDeque, RDequeRx and RDequeReactive interfaces
    ๐Ÿ”‹ Feature - added addAllCounted() and removeAllCounted() methods to RSet, RSetRx and RSetReactive interfaces

    ๐Ÿ›  Fixed - Redis Stream trim command with MINID strategy is not fully supported
    ๐Ÿ›  Fixed - Quarkus requires AutowiredAnnotationBeanPostProcessor class during native image execution
    ๐Ÿ›  Fixed - issues with Quarkus Netty dependencies
    ๐Ÿ›  Fixed - MOVED redirection loop detected error in Redis Cluster
    ๐Ÿ›  Fixed - handling master with empty slots in Redis Cluster topology
    ๐Ÿ›  Fixed - SentinelConnectionManager should use unified compressed format for IPv6
    ๐Ÿ›  Fixed - RLocalCachedMap.readAllValues() method uses key decoder instead of value
    ๐Ÿ›  Fixed - empty array passed to RKeys.delete() method causes thread blocking
    ๐Ÿ›  Fixed - cluster partition without address causes NPE
    ๐Ÿ›  Fixed - threads waiting for RSemaphore permits acquisition unable to acquire them if permits added
    ๐Ÿ›  Fixed - RRateLimiter allows limit overcome
    ๐Ÿ›  Fixed - RMapCacheReactive and RMapCacheRx interfaces miss method to define eviction algorithm
    ๐Ÿ›  Fixed - write-behind tasks aren't flushed after Redisson shutdown() method invocation
    ๐Ÿ›  Fixed - LiveObjects with indexed field can't be stored using batch persist method
    ๐Ÿ›  Fixed - failed master shouldn't skipped in Redis Cluster topology scan (thanks to @JerryWzc)
    ๐Ÿ›  Fixed - RListReactive iterator with filter returns non-deterministic result
    ๐Ÿ›  Fixed - replicatedServers mode should use ip addresses if nodes defined using hostnames
    ๐Ÿ›  Fixed - multiple masters check removed for replicatedServers mode
    ๐Ÿ›  Fixed - MapWriter should be defined along with writeBehind settings

  • v3.16.1 Changes

    ๐Ÿ‘Œ Improvement - MarshallingCodec and JsonJacksonCodec warmup added
    ๐Ÿ‘Œ Improvement - performance improvement for connection pool with few connections

    Fixed - connection leak after command error if Batch executed in REDIS_WRITE_ATOMIC mode ๐Ÿ›  Fixed - AsyncSemaphore race condition issue
    ๐Ÿ›  Fixed - Quarkus native remote service invocation fails
    ๐Ÿ›  Fixed - nameMapper setting isn't applied to RTopic object
    Fixed - Batch in REDIS_WRITE_ATOMIC mode doesn't respect batch settings
    ๐Ÿ›  Fixed - UndeclaredThrowableException is thrown when cache down while executing RLiveObjectService.get() method
    ๐Ÿ›  Fixed - Reactive Transactions aren't unlocking transactional locks
    ๐Ÿ›  Fixed - keySet() method of transactional map throws Exception
    ๐Ÿ›  Fixed - lock expiration renewal should be canceled if owner doesn't exist (thanks to @regidio)

  • v3.16.0 Changes

    ๐Ÿ”‹ Feature - GraalVM native-image support
    ๐Ÿ”‹ Feature - Spring Data Redis 2.5.x support
    ๐Ÿ”‹ Feature - Helidon CDI integration
    ๐Ÿ”‹ Feature - Quarkus integration
    ๐Ÿ”‹ Feature - Micronaut integration
    ๐Ÿ”‹ Feature - data partitioning support for JCache

    ๐Ÿ›  Fixed - Live Object aren't considered if defined in Conditions.and() clause
    ๐Ÿ›  Fixed - Redisson shutdown takes much time after RBatch execution
    Fixed - RBatch object in REDIS_WRITE_ATOMIC or REDIS_READ_ATOMIC mode can be corrupted by PING command
    ๐Ÿ›  Fixed - RKeysReactive.getKeysByPattern() method returns wrong result
    ๐Ÿ›  Fixed - RExpirable.expire(Instant) method doesn't work for RBloomFilter, RBoundedBlockingQueue, RDelayedQueue, RLock, RIdGenerator, RMultimap, RMapCache, RPriorityQueue, RRateLimiter, RReliableTopic, RSetMultimap, RTimeSeries objects
    ๐Ÿ›  Fixed - RBlockingDequeReactive.takeElements() method does not consume all elements
    ๐Ÿ›  Fixed - RScheduledExecutorService stops to work if task timeout occurred
    ๐Ÿ›  Fixed - RedissonReactiveSubscription removes listener after first 32 messages
    ๐Ÿ›  Fixed - RedisNodeNotFoundException is thrown after cluster failover (thanks to @UzimakiNaruto)