redis_release6
Redis Release Notes
![]() |
![]() Redis Technical Support |
![]() 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 기준- yum install yum-utils
- yum install scl-utils
- yum install centos-release-scl
- yum-config-manager --enable rhel-server-rhscl-7-rpms
- yum install devtoolset-8
- scl enable devtoolset-8 bash -> .bash_profile
- ACL(Access Control List/접근 제어): 사용자(user) 관리 acl.c
- New RESP3(request-response) protocol: HELLO 명령
- 전체 동기화(Full replication) 시 복제 서버에서도 rdb 파일을 저장하지 않는 기능 추가: repl-diskless-load
- Multi I/O threads
- Redis-benchmark 기능 추가
- XINFO STREAM key [FULL [COUNT <count>]]: 지정한 키의 전체 데이터(entry), GROUPS, CONSUMERS를 조회할 수 있는 옵션 추가
- SET 명령에 KEEPTTL 옵션 추가
- DEBUG RELOAD [MERGE] [NOFLUSH] [NOSAVE] 옵션 추가
- lazyfree-lazy-user-del 파라미터 추가
-
Event Notification 추가
PERSIST 명령 -> 'persist'
MIGRATE 명령 -> 'del' (move일 경우)
RESTORE 명령 -> 'restore' - Redis-cli에서 User와 password 사용(ACL 관련)
- 주기적(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일(목)
- ACL(Access Control List/접근 제어): 사용자(user) 관리 acl.c
-
서버 지원 클라이언 사이드 캐싱(Server-assisted Client side caching) tracking.c
CLIENT TRACKING 명령 - New RESP3(request-response) protocol: HELLO 명령
- 전체 동기화(Full replication) 시 복제 서버에서도 rdb 파일을 저장하지 않는 기능 추가: repl-diskless-load
- Multi I/O threads
- SET 명령에 KEEPTTL 옵션 추가
- redis-benchmark 기능 추가: 클러스터 지원 --cluster, 쓰레드 지원 --threads, 측정(표시) 정밀도 --precision
- 주기적(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
- lolwut6.c
- sha256.c: password
<< Introduction | Release Notes 6 | Release Notes 5 >> |
---|
조회수 :
Email
답글이 올라오면 이메일로 알려드리겠습니다.