Redisson v3.17.0 Release Notes

  • ๐Ÿ”‹ 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