All Versions
Latest Version
Avg Release Cycle
27 days
Latest Release

Changelog History
Page 1

  • v3.15.3 Changes

    ๐Ÿ”‹ Feature - connectionListener setting added

    ๐Ÿ›  Fixed - tryAcquire() and availablePermits() method of RRateLimiter object throw too many results to unpack error
    ๐Ÿ›  Fixed - RRateLimiter object throws LUA-script error
    ๐Ÿ›  Fixed - connection leak in Topology Manager for Replicated Redis config
    ๐Ÿ›  Fixed - ConnectionListener.onConnect() method isn't triggered during Redisson start
    ๐Ÿ›  Fixed - addLastIfExists() and addLastIfExists() methods of RDeque object don't work
    ๐Ÿ›  Fixed - ArrayIndexOutOfBoundsException is thrown if Redis master change was unsuccessful
    ๐Ÿ›  Fixed - RScheduledExecutorService.scheduleAtFixedRate() starts multiple instances of the same task if multiple workers defined
    ๐Ÿ›  Fixed - tasks scheduled via RScheduledExecutorService.scheduleAtFixedRate() method aren't executed after some time

  • v3.15.2 Changes

    ๐Ÿ”‹ Feature - move() method added to RDeque and RBlockingDeque objects
    ๐Ÿ”‹ Feature - MINID trimming strategy and LIMIT argument added to RStream.add() method
    ๐Ÿ”‹ Feature - new config checkSlaveStatusWithSyncing setting added
    ๐Ÿ”‹ Feature - enable tcpNoDelay setting by default (thanks to @mikawudi)
    ๐Ÿ”‹ Feature - RedissonClient.reactive() and RedissonClient.rxJava() methods added
    ๐Ÿ”‹ Feature - Spring Boot auto configuration should create Reactive and RxJava instances

    ๐Ÿ‘Œ Improvement - simplified API of and RStream.readGroup()

    ๐Ÿ›  Fixed - Hibernate modules prior 5.3 version don't support fallback for nextTimestamp() method
    ๐Ÿ›  Fixed - MarshallingCodec doesn't release allocated ByteBuf object if exception thrown during encoding
    ๐Ÿ›  Fixed - retryInterval isn't used for next attempt if Redis client didn't send response
    ๐Ÿ›  Fixed - lease timeout updated in non-safe way in org.redisson.RedissonLock#tryLockInnerAsync method (thanks to @coding-tortoise)
    ๐Ÿ›  Fixed - references in RxJava objects aren't supported
    ๐Ÿ›  Fixed - Spring Data Redis module doesn't support StreamReadOptions.isNoack() option in RedisStreamCommands.xReadGroup() method. ๐Ÿ›  Fixed - trying to authentificate sentinel server without password
    ๐Ÿ›  Fixed - RStream.getInfo() method doesn't decode entries
    ๐Ÿ›  Fixed - Redisson doesn't reconnect slave if it was excluded before due to errors in failedSlaveCheckInterval time range. (thanks to @mikawudi)

  • v3.15.1 Changes

    ๐Ÿ”‹ Feature - expireAt(Instant) method added to RExpirable object
    ๐Ÿ”‹ Feature - random() method added to RScoredSortedSet object
    ๐Ÿ”‹ Feature - randomKeys() and randomEntries() methods added to RMap object
    ๐Ÿ”‹ Feature - count with any parameter added for search in RGeo object
    ๐Ÿ”‹ Feature - ability to search in box added for RGeo object

    ๐Ÿ‘Œ Improvement - simplified RGeo API with search methods
    ๐Ÿ‘Œ Improvement - added check for invocation of sync methods in async/rx/reactive listeners

    ๐Ÿ›  Fixed - continuous reconnecting to broken host if it was defined as hostname in Redisson Cluster config
    ๐Ÿ›  Fixed - WeightedRoundRobinBalancer filters master node in readMode=ReadMode.MASTER_SLAVE
    ๐Ÿ›  Fixed - RPatternTopicReactive.removeListener() method should return Mono<Void>
    ๐Ÿ›  Fixed - remove authType and principal attributes on Apache Tomcat logout
    ๐Ÿ›  Fixed - scheduled tasks via RScheduledExecutorService object can't be canceled
    ๐Ÿ›  Fixed - RStream.claim() method throws NPE if given id does not exist
    ๐Ÿ›  Fixed - RPatternTopic on keyspace/keyevent notification subscribes only to single master node in Redis cluster
    ๐Ÿ›  Fixed - Class cast exception is thrown during iteration of RMapCache entries
    ๐Ÿ›  Fixed - internal RedissonBaseLock.evalWriteAsync() method isn't executed again if cluster slaves amount > 0
    ๐Ÿ›  Fixed - CPU spike after Slave failover if subscriptionMode=SLAVE
    ๐Ÿ›  Fixed - rename() method throws throws RedisException if RBloomFilter is empty
    ๐Ÿ›  Fixed - output full exception stacktrace if unable connect to sentinel server
    ๐Ÿ›  Fixed - duplicated PING sent when Redis connection got reconnected
    ๐Ÿ›  Fixed - Optional class can't be used as a result object in RemoteService interface
    ๐Ÿ›  Fixed - redisson-spring-boot-starter should use redisson-spring-data-24 module
    ๐Ÿ›  Fixed - RMapCacheRx.getLock() returns org.redisson.RedissonLock instead of org.redisson.api.RLockRx
    ๐Ÿ›  Fixed - RMapCacheReactive.getLock() returns org.redisson.RedissonLock instead of org.redisson.api.RLockReactive

  • v3.15.0 Changes

    Feature - Apache Tomcat 10 support added
    ๐Ÿ”’ Feature - Spin Lock added. Please refer to documentation for more details (thanks to @Vorotyntsev)
    ๐Ÿ”‹ Feature - sentinelPassword setting added (thanks to @ghollies)
    ๐Ÿ”‹ Feature - RedisNode.getMemoryStatistics() method added
    ๐Ÿ”‹ Feature - setAndKeepTTL() method added to RBucket object
    ๐Ÿ”‹ Feature - min idle time parameter added to listPending() and pendingRange() methods of RStream object
    ๐Ÿ”‹ Feature - autoClaim(), fastAutoClaim() and createConsumer() methods added to RStream object
    ๐Ÿ”‹ Feature - addIfExists(), addIfGreater() and addIfLess() methods added to RScoredSortedSet object
    ๐Ÿ”‹ Feature - putIfExists() and fastPutIfExists() methods added to RMap object
    ๐Ÿ”‹ Feature - tryAdd() and addIfExists() methods added to RGeo object
    ๐Ÿ”‹ Feature - readUnion(), readIntersection(), diff(), readDiff(), rangeTo(), revRangeTo() methods added to RScoredSortedSet object
    ๐Ÿ”‹ Feature - ScoredSortedSetAddListener added to RScoredSortedSet object

    ๐Ÿ‘Œ Improvement - use System.nanoTime() in IdleConnectionWatcher to avoid clock drifting

    ๐Ÿ›  Fixed - eval command executed on Redis cluster doesn't use key for master/slave selection
    ๐Ÿ›  Fixed - MOVED or ASK response from Redis causes Unable to acquire connection! error
    ๐Ÿ›  Fixed - Spring Redis Data PatternTopic listeners are invoked multiple times per message
    ๐Ÿ›  Fixed - don't add Redis Slave as active if connections can't be established (thanks to @yann9)
    ๐Ÿ›  Fixed - RBatch object throws Exception if not all slots are covered in Redis Cluster
    ๐Ÿ›  Fixed - stream and queue object may lost entry during execution of any blocking poll operation
    ๐Ÿ›  Fixed - Redis BUSY response handling (thanks to @wuqian0808)
    ๐Ÿ›  Fixed - InterruptedExceptions are hidden by RedisException
    ๐Ÿ›  Fixed - primitive class numbers aren't indexed correctly in LiveObject search engine
    ๐Ÿ›  Fixed - NPE is thrown if LiveObject index stored for the first time in Redis cluster
    ๐Ÿ›  Fixed - NPE is thrown if Redis node doesn't return "flags" parameter

  • v3.14.1 Changes

    ๐Ÿ”‹ Feature - added option LocalCachedMapOptions.storeCacheMiss to store cache miss in a local cache (thanks to @ipalbeniz)
    ๐Ÿ”‹ Feature - LFU eviction algorithm added to trySetMaxSize and setMaxSize methods of RMapCache interface

    ๐Ÿ‘Œ Improvement - RedisNodes ping results check optimization (thanks to @blackstorm)
    ๐Ÿ‘Œ Improvement - keySet().isEmpty() and values().isEmpty() methods of RMap object aren't efficient

    ๐Ÿ›  Fixed - connection leak if new discovered slaves in LOADING Redis is loading the dataset in memory state (thanks to @mikawudi)
    ๐Ÿ›  Fixed - RMap.putIfAbsent() method doesn't check value for null
    ๐Ÿ›  Fixed - Apache Tomcat Valve objects should be added in context pipeline instead of engine's pipeline
    ๐Ÿ›  Fixed - slaves synchronization timeout isn't respected during RLock.lock() method invocation
    ๐Ÿ›  Fixed - ConnectionWatchdog may cause connection leak (thanks to @mikawudi)
    ๐Ÿ›  Fixed - Redisson.shutdown() method throws RejectedExecutionException
    ๐Ÿ›  Fixed - count() and addAll() methods of RScoredSortedSetReactive and RScoredSortedSetRx interfaces throw ClassCastException
    ๐Ÿ›  Fixed - GEORADIUS_RO command should be used instead of GEORADIUS in Spring Redis Data module
    ๐Ÿ›  Fixed - Spring Data Redis RedissonConnection.del() method doesn't work in pipeline on Redis cluster
    ๐Ÿ›  Fixed - RLocalCachedMap.putAll() method updates in wrong way log used for Reconnection.LOAD strategy
    ๐Ÿ›  Fixed - redisRepository.opsForSet().distinctRandomMembers() method throws ClassCastException

  • v3.14.0 Changes

    November 22, 2020

    ๐Ÿ“š Spring Session implementation is deprecated now. Please refer to documentation for more details

    Feature - RReliableTopic object added. Please refer to documentation for more details
    Feature - IdGenerator object added. Please refer to documentation for more details
    ๐Ÿ”‹ Feature - Spring Data Redis 2.4.0 integration
    ๐Ÿ”‹ Feature - StreamMessageId.AUTO_GENERATED const added
    ๐Ÿ”‹ Feature - Rx API for RMultimapCache object (thanks to @mlkammer)
    ๐Ÿ”‹ Feature - cluster-safe implementation of rename, renameNX methods of RedissonClusterConnection object (thanks to @eager)
    ๐Ÿ”‹ Feature - RxJava2 API replaced with RxJava3
    ๐Ÿ”‹ Feature - tryAdd() method added to RSet and RSetCache objects

    ๐Ÿ‘Œ Improvement - preventing sending CLUSTER NODES to the same host (thanks to @serssp)

    ๐Ÿ›  Fixed - RSetMultimap could throw a class cast exception on its get() method because it actually contained a list based multimap instance (thanks to @mlkammer)
    ๐Ÿ›  Fixed - Spring Data Redis redisTemplate.opsForGeo().radius() method doesn't work
    ๐Ÿ›  Fixed - RKeys.deleteByPattern() method executed in batch should throw UnsupportedOperationException in cluster mode
    Fixed - CACHE_REGION_PREFIX setting isn't applied for hibernate 5.3+
    ๐Ÿ›  Fixed - deprecation error log about JSON config even though it's not used
    ๐Ÿ›  Fixed - update new master record in DNS monitor only if it replaced old master successfully
    ๐Ÿ›  Fixed - RQueue.removeIf() method should throw UnsupportedOperationException
    ๐Ÿ›  Fixed - Lock watchdog won't renew after reconnection (thanks to @burgleaf)
    ๐Ÿ›  Fixed - TimeSeries.iterator() method doesn't respect the ordering
    ๐Ÿ›  Fixed - RRateLimiter throws "bad argument #2 to 'unpack' (string expected, got nil)."
    ๐Ÿ›  Fixed - CROSSSLOT error rised when clearing a redis-spring-data cache
    ๐Ÿ›  Fixed - RLongAdder.sum() and RDoubleAdder.sum() methods return wrong result
    ๐Ÿ›  Fixed - getting error while connecting to sentinel using password
    ๐Ÿ›  Fixed - result of method isn't sorted by key

  • v3.13.6 Changes

    October 14, 2020

    ๐Ÿ‘Œ Improvement - set pingConnectionInterval = 30000 by default

    ๐Ÿ›  Fixed - CROSSLOT error thrown during RLiveObject update
    ๐Ÿ›  Fixed - RRateLimiter.delete() method returns false
    ๐Ÿ›  Fixed - RBitSet.set(long bitIndex, boolean value) should return boolean
    ๐Ÿ›  Fixed - RBatch doesn't handle MOVED, ASK Redis errors in Redis
    ๐Ÿ›  Fixed - "response has been skipped due to timeout" warnings were removed
    ๐Ÿ›  Fixed - additional check for blocking command added in PingConnectionHandler
    ๐Ÿ›  Fixed - object's name should be checked for null
    ๐Ÿ›  Fixed - redisson-spring-boot-starter doesn't load config file
    Fixed - RTransaction should be executed in IN_MEMORY_ATOMIC mode
    ๐Ÿ›  Fixed - high contention during connection acquisition from connection pool

  • v3.13.5 Changes

    September 28, 2020

    breaking change - spring.redis.redisson.config setting renamed to spring.redis.redisson.file

    ๐Ÿ”‹ Feature - RClusteredTopic object added
    ๐Ÿ”‹ Feature - RRingBuffer.setCapacity() method added
    ๐Ÿ”‹ Feature - merge(), compute(), computeIfAbsent(), computeIfPresent() methods implemented for RMap-based objects
    ๐Ÿ”‹ Feature - spring config server support (thanks @anjia0532)

    ๐Ÿ‘Œ Improvement - expand config variables from system properties if not found as environment variables (thanks to @jribble)

    ๐Ÿ›  Fixed - RKeys.keysByPattern() method doesn't use pattern (thanks to @sh1nj1)
    ๐Ÿ›  Fixed - RObjectLiveService.delete() method throws ClassCastException
    ๐Ÿ›  Fixed - fail to insert key with TTL = 0 if the same key was previously set with non-zero TTL
    ๐Ÿ›  Fixed - Pubsub channel isn't reattached to a new master after slot migration
    ๐Ÿ›  Fixed - PingConnectionHandler throws CancellationException
    ๐Ÿ›  Fixed - shared session between several Tomcats expires earlier if readMode=Redis and broadcastSessionEvents=false
    ๐Ÿ›  Fixed - incorrect session attributes being returned in UpdateMode=AFTER_REQUEST and ReadMode=REDIS
    ๐Ÿ›  Fixed - Tomcat UpdateValve object throws NullPointerException if url context doesn't exist
    ๐Ÿ›  Fixed - old value of RLiveObject's field isn't removed from index
    ๐Ÿ›  Fixed - Spring Data Redis RedissonSubscription.onPatternMessage() method throws ClassCastException
    ๐Ÿ›  Fixed - RSemaphore.addPermits() method doesn't work
    ๐Ÿ›  Fixed - RMultimap.sizeInMemory() method doesn't take in account size of all associated objects

  • v3.13.4 Changes

    September 02, 2020

    ๐Ÿ”‹ Feature - batch support for revRank, getScore, addAndGetRevRank methods added to RScoredSortedSet object (thanks to @johnou)
    ๐Ÿ”‹ Feature - RRateLimiter.setRate method added (thanks to @AbhishekChandrasekaran)
    ๐Ÿ”‹ Feature - RObject.getIdleTime() method added
    ๐Ÿ”‹ Feature - RKeys.getKeysWithLimit() method added

    ๐Ÿ›  Fixed - RRateLimiter.availablePermits() method throws exception (regression since 3.13.3)
    ๐Ÿ›  Fixed - compatibility with Spring Data Redis 2.3.3
    ๐Ÿ›  Fixed - UnsupportedOperationException is thrown if Spring Data Redis connection executed in pipelined mode
    ๐Ÿ›  Fixed - multiple Tomcat requests share different instances stored in the same session in readMode=REDIS
    ๐Ÿ›  Fixed - Spring Data Redis can't be used with proxied RedissonClient instance
    ๐Ÿ›  Fixed - Classloading issues when MarshallingCodec used in Tomcat
    ๐Ÿ›  Fixed - Redis cluster slot calculation doesn't work properly if brace isn't closed (thanks to @dengliming)
    ๐Ÿ›  Fixed - RBloomFilter rename method doesn't rename config object (thanks to @dengliming)
    ๐Ÿ›  Fixed - slf4j-simple dependency excluded from redisson-all
    ๐Ÿ›  Fixed - JCache.removeAsync method throws NPE if operation fails
    ๐Ÿ›  Fixed - all cached Lua scripts are executed on Redis master nodes only
    ๐Ÿ›  Fixed - XPENDING command causes syntax error in redisson-spring-data-23
    ๐Ÿ›  Fixed - CommandPubSubDecoder throws NPE
    ๐Ÿ›  Fixed - MasterSlaveConnectionManager allocates superfluous 113Kb of memory for non-cluster Redis setup

  • v3.13.3 Changes

    August 05, 2020

    ๐Ÿ”‹ Feature - BITFIELD command support added to RBitSet object

    ๐Ÿ‘Œ Improvement - reset ClassIntrospector instance after RLiveObjectService.persist() method invocation
    ๐Ÿ‘Œ Improvement - amount of simultaneously created connections during pool initialization reduced to 10

    ๐Ÿ›  Fixed - "SlaveConnectionPool no available Redis entries" error is thrown after failover
    ๐Ÿ›  Fixed - check RedisConnection status befor RedisConnection object join freeConnections (thanks to @mikawudi)
    ๐Ÿ›  Fixed - different topics subscribed to the same Redis node in Cluster
    ๐Ÿ›  Fixed - RFairLock.tryLock() method doesn't apply waitTimeout parameter
    ๐Ÿ›  Fixed - RLiveObjectService.delete() method works asynchronously
    ๐Ÿ›  Fixed - deserialization exception is thrown if RMapCache.EntryRemovedListener is set
    ๐Ÿ›  Fixed - incorrect registration of Sentinel node defined with hostname
    ๐Ÿ›  Fixed - OOM arise during RLiveObjectService.persist() method invocation
    ๐Ÿ›  Fixed - MarshallingCodec throws IllegalArgumentException: RIVER
    ๐Ÿ›  Fixed - RLock.lock() method throws java.util.NoSuchElementException
    ๐Ÿ›  Fixed - Spring Data Redis xReadGroup should use write operation
    ๐Ÿ›  Fixed - Spring Data Redis connection in multi mode may cause thread hang
    ๐Ÿ›  Fixed - Spring Data Redis connection in multi mode may cause connection leak
    ๐Ÿ›  Fixed - RRateLimiter rate interval might be exceeded