Redis Release Notes

Redis Server 教育
Redis Developer Course
Redis 定期点検/技術支援
Redis Technical Support
Redis エンタープライズサーバ
Redis Enterprise Server

Redis Release Notes 6

Redis 6.0.6 - 2020년 7월 20일(월)        

    Upgrade urgency MODERATE: several bugs with moderate impact are fixed here.

    The most important issues are listed here:

    * Fix crash when enabling CLIENT TRACKING with prefix
    * EXEC always fails with EXECABORT and multi-state is cleared
    * RESTORE ABSTTL won't store expired keys into the db
    * redis-cli better handling of non-pritable key names
    * TLS: Ignore client cert when tls-auth-clients off
    * Tracking: fix invalidation message on flush
    * Notify systemd on Sentinel startup
    * Fix crash on a misuse of STRALGO
    * Few fixes in module API
    * Fix a few rare leaks (STRALGO error misuse, Sentinel)
    * Fix a possible invalid access in defrag of scripts (unlikely to cause real harm)

    New features:

    * LPOS command to search in a list
    * Use user+pass for MIGRATE in redis-cli and redis-benchmark in cluster mode
    * redis-cli support TLS for --pipe, --rdb and --replica options
    * TLS: Session caching configuration support

Redis 6.0.5 - 2020년 6월 9일(화)        

    Upgrade urgency MODERATE: several bugs with moderate impact are fixed here.

    The most important issues are listed here:

    * Fix handling of speical chars in ACL LOAD.
    * Make Redis Cluster more robust about operation errors that may lead
      to two clusters to mix together.
    * Revert the sendfile() implementation of RDB transfer. It causes some delay.
    * Fix TLS certificate loading for chained certificates.
    * Fix AOF rewirting of KEEPTTL SET option.
    * Fix MULTI/EXEC behavior during -BUSY script errors.

Redis 6.0.4 - 2020년 5월 28일(목)        

    Upgrade urgency CRITICAL: this release fixes a severe replication bug.

    Redis 6.0.4 fixes a critical replication bug caused by a new feature introduced
    in Redis 6. The feature, called "meaningful offset" and strongly wanted by
    myself (antirez) was an improvement that avoided that masters were no longer
    able, during a failover where they were demoted to replicas, to partially
    synchronize with the new master. In short the feature was able to avoid full
    synchronizations with RDB. How did it work? By trimming the replication backlog
    of the final "PING" commands the master was sending in the replication channel:
    this way the replication offset would no longer go "after" the one of the
    promoted replica, allowing the master to just continue in the same replication
    history, receiving only a small data difference.

    However after the introduction of the feature we (the Redis core team) quickly
    understood there was something wrong: the apparently harmless feature had
    many bugs, and the last bug we discovered, after a joined effort of multiple
    people, we were not even able to fully understand after fixing it. Enough was
    enough, we decided that the complexity cost of this feature was too high.
    So Redis 6.0.4 removes the feature entirely, and fixes the data corruption that
    it was able to cause.

    However there are two facts to take in mind.

    Fact 1: Setups using chained replication, that means that certain replicas
    are replicating from other replicas, up to Redis 6.0.3 can experience data
    corruption. For chained replication we mean that:

        +------------+             +-----------+            +------------------+
        | master |--------->| replica |-------->| sub-replica |
        +------------+             +-----------+            +------------------+


    People using chained replication SHOULD UPGRADE ASAP away from Redis 6.0.0,
    6.0.1, 6.0.2 or 6.0.3 to Redis 6.0.4.

    To be clear, people NOT using this setup, but having just replicas attached
    directly to the master, SHOUDL NOT BE in danger of any problem. But we
    are no longer confident on 6.0.x replication implementation complexities
    so we suggest to upgrade to 6.0.4 to everybody using an older 6.0.3 release.
    We just so far didn't find any bug that affects Redis 6.0.3 that does not
    involve chained replication.

    People starting with Redis 6.0.4 are fine. People with Redis 5 are fine.
    People upgrading from Redis 5 to Redis 6.0.4 are fine.
    TLDR: The problem is with users of 6.0.0, 6.0.1, 6.0.2, 6.0.3.

    Fact 2: Upgrading from Redis 6.0.x to Redis 6.0.4, IF AND ONLY IF you
    use chained replication, requires some extra care:

    1. Once you attach your new Redis 6.0.4 instance as a replica of the current
       Redis 6.0.x master, you should wait for the first full synchronization,
       then you should promote it right away, if your setup involves chained
       replication. Don't give it the time to do a new partial synchronization
       in the case the link between the master and the replica  will break in
       the mean time.

    2. As an additional care, you may want to set the replication ping period
       to a very large value (for instance 1000000) using the following command:

           CONFIG SET repl-ping-replica-period 1000000

       Note that if you do "1" with care, "2" is not needed.
       However if you do it, make sure to later restore it to its default:

           CONFIG SET repl-ping-replica-period 10

    So this is the main change in Redis 6. Later we'll find a different way in
    order to achieve what we wanted to achieve with the Meaningful Offset feature,
    but without the same complexity.

    Other changes in this release:

    * PSYNC2 tests improved.
    * Fix a rare active defrag edge case bug leading to stagnation
    * Fix Redis 6 asserting at startup in 32 bit systems.
    * Redis 6 32 bit is now added back to our testing environments.
    * Fix server crash for STRALGO command,
    * Implement sendfile for RDB transfer.
    * TLS fixes.
    * Make replication more resistant by disconnecting the master if we
      detect a protocol error. Basically we no longer accept inline protocol
      from the master.
    * Other improvements in the tests.

Redis 6.0.3 - 2020년 5월 16일(토)        

    Upgrade urgency CRITICAL: a crash introduced in 6.0.2 is now fixed.

    1eab62f7e Remove the client from CLOSE_ASAP list before caching the master.

Redis 6.0.2 - 2020년 5월 15일(금)        

    Upgrade urgency MODERATE: many not critical bugfixes in different areas.
      Critical fix to client side caching when keys are evicted from the tracking table but
      no notifications are sent.

    The following are the most serious fix:

    * XPENDING should not update consumer's seen-time
    * optimize memory usage of deferred replies - fixed
    * Fix CRC64 initialization outside the Redis server itself.
    * stringmatchlen() should not expect null terminated strings.
    * Cluster nodes availability checks improved when there is
      high Pub/Sub load on the cluster bus.
    * Redis Benchmark: Fix coredump because of double free
    * Tracking: send eviction messages when evicting entries.
    * rax.c updated from upstream antirez/rax.
    * fix redis 6.0 not freeing closed connections during loading.

    New features:

    * Support setcpuaffinity on linux/bsd
    * Client Side Caching: Add Tracking Prefix Number Stats in Server Info
    * Add --user argument to redis-benchmark.c (ACL)

Redis 6.0.1 - 2020년 5월 2일(토)        

  • Redis 6.0 부터 옛 GCC 버전(예: 4.8.5)을 사용하면 '_Atomic' 관련 에러가 발생합니다.
    GCC를 최신 버전(예:8.3.1)으로 설치해서 컴파일하세요.
      CentOS 7 기준
    1. yum install yum-utils
    2. yum install scl-utils
    3. yum install centos-release-scl
    4. yum-config-manager --enable rhel-server-rhscl-7-rpms
    5. yum install devtoolset-8
    6. scl enable devtoolset-8 bash -> .bash_profile

  • ACL(Access Control List/접근 제어): 사용자(user) 관리   acl.c
  • 주기적(1초에 10번)으로 만료된 키들을 삭제하는 알고리즘 개선.   expire.c
  • TLS/SSL.   tls.c
  • 6.0에 추가된 파일.
    • acl.c: ACL
    • tracking.c: Client side caching
    • connection.c
    • tls.c: TLS/SSL
    • gopher.c: RESP3
    • sha256.c: password
    • timeout.c
    • crcspeed.c, crcspeed.h
    • lolwut6.c

Redis 6.0.0 - 2020년 4월 30일(목)        

    Upgrade urgency CRITICAL: many bugs fixed compared to the last release candidate. 
    Better to upgrade if you see things affecting your environment in the changelog.

    Hi all, finally we have Redis 6.0.0 GA! Enjoy this new Redis release.
    Most of the documentation was updated today so that you can likely
    find what you are looking for about the new features at redis.io.
    This is the list of what changed compared to the previoius release candidate:

    * XCLAIM AOF/replicas propagation fixed.
    * Client side caching: new NOLOOP option to avoid getting notified about
      changes performed by ourselves.
    * ACL GENPASS now uses HMAC-SHA256 and have an optional "bits" argument.
      It means you can use it as a general purpose "secure random strings"
      primitive!
    * Cluster "SLOTS" subcommand memory optimization.
    * The LCS command is now a subcommand of STRALGO.
    * Meaningful offset for replicas as well. More successful partial
      resynchronizations.
    * Optimize memory usage of deferred replies.
    * Faster CRC64 algorithm for faster RDB loading.
    * XINFO STREAM FULL, a new subcommand to get the whole stream state.
    * CLIENT KILL USER .
    * MIGRATE AUTH2 option, for ACL style authentication support.
    * Other random bugfixes.

Redis 6.0 RC4 - 2020년 4월 16일(목)

Redis 6.0 RC3 - 2020년 3월 31일(화)

Redis 6.0 RC2 - 2020년 3월 5일(목)      

  • Redis RC2 is out, and this is our new schedule for Redis 6:
    • RC2 today
    • RC3 end of March   3월 말
    • RC4 mid April   4월 중순
    • GA end of April   4월 말
  • This is the changelog for this release:
    Upgrade urgency MODERATE: Normal bugfixing release of a non-GA branch. Hi Redis users, Redis 6 is approaching and will be released 30th of April. New release candidates will be released at the end of March, then another one mid April, to finally reach the GA at the end of April. Redis 6 RC2 brings many fixes and new things, especially in the area of client side caching. This is the list of big changes in this release. As usually you can find the full list of commits at the end:
  • New features and improvements:
    • ACL LOG: log denied commands, keys accesses and authentications.
    • Client side caching redesigned. Now we use keys not caching slots.
    • Client side caching: Broadcasting mode implemented.
    • Client side caching: OPTIN/OUTPUT modes implemented.
    • Remove RDB files used for replication in persistence-less instances (option).
  • Fixes (only selected ones, see commits for all the fixes):
    • Different fixes to streams in edge cases.
    • Fix duplicated CLIENT SETNAME reply because of RESP3 changes.
    • Fix crash due to new active expire division by zero.
    • Avoid sentinel changes promoted_slave to be its own replica.
    • Fix bug on KEYS command where pattern starts with * followed by \x00.
    • Threaded I/O: now the main thread is used as well to do I/O.
    • Many fixes to modules APIs, and more to come in the next RCs.
    • ld2string should fail if string contains \0 in the middle.
    • Make the Redis test more reliable.
    • Fix SPOP returning nil (see #4709). WARNING: API change.

    The full list of commits is here:   6.0-rc2

Redis 6.0 RC1 - 2019년 12월 19일(목)              


<< Introduction Release Notes 6 Release Notes 5 >>

조회수 :

Email 返事がかかってなれば、メールでお知らせします。