redis_release4
Redis Release Notes
레디스 서버 교육 신청 |
레디스 정기점검/기술지원 Redis Technical Support |
레디스 엔터프라이즈 서버 Redis Enterprise Server |
---|
Redis Release Notes 4
Redis 4.0.11 - 2018년 8월 3일(금) HIGH 높음
- 클러스터 failover 관련 버그 수정: 매우 드물게 발생할 것 같은 다음과 같은 경우에 장애조치가 되지 않는 버그가 있습니다.
노드 A가 마스터이고 B, C가 클론(슬레이브)인 상태에서 A가 다운되어 B가 새 마스터가 되었고, C가 B에게 SYNC 명령을 보내기 전에 B가 다운되면 C는 마스터가 되지 못한다.
» 해당 이슈: cluster failover bug #5081 - Disk-base 복제에서 드물게 복제 스트림이 오염되는 버그 수정, 알 수 없는 명령 입력 시 인수도 리턴하도록 수정 » 수정 내용(commit): fix rare replication stream corruption with disk-based replication.
- RANDOMKEY 명령이 무한 루프에 빠져 리턴을 못하는 버그 수정: RANDOMKEY 명령으로 찾은 키가 만료되었는지 확인해서 만료되었으면 다음 키를 찾는다. 그런데 이 과정이 계속 반복되면 무한 루프에 빠질 수 있다. 그래서 100번까지만 시도하는 것으로 수정했다.
- EXISTS 명령이 만료키 관련해서 클론(슬레이브)에서도 좀더 일관된 방식(more consistent way) 동작하도록 수정했습니다.
- SENTINEL SET 명령 잠재적 보안 이슈 개선: SENTINEL SET 명령으로 notification-script와 client-reconfig-script를 수정할 수 있다. 이것을 설정할 수 없도록 하는 파라미터 deny-scripts-reconfig가 sentinel.conf에 추가되었다. Yes일 경우 sentinel set 명령으로 스크립트 파일을 지정할 수 없다. » Sentinel Set 명령 보기
» 수정 내용(commit): Set repl_down_since to zero on state change.
Redis 4.0.10 - 2018년 6월 13일(수) CRITICAL 필수
- EVAL 명령(Lua scripting engine) 관련해서 중요한 보안 문제를 수정했습니다.
EVAL 명령으로 레디스 서버를 다운(Crash) 시킬 수 있습니다.
이것은 Lua 사용자만 해당되는 것이 아니고 모든 레디스 서버에 해당되며, 특히 레디스 서버가 인터넷에 노출되어 있는 경우 위험합니다.
예를 들어 레디스를 클라우드 서비스하는 곳에서는 필수로 업그레이드하시기 바랍니다.
이 문제는 Apple 보안팀에서 발견하였고 이후 알리바바(Alibaba)에서도 Lua 관련된 몇 가지 보안 이슈를 제기하였습니다. 이후 Redis Labs, Amazon, Alibaba, Microsoft, Google 같은 클라우드 서비스 업체와 협력하여 해결하였습니다.
3.2 버전 사용자도 보안 이슈가 수정된 3.2.12가 나왔으니 확인하세요.
» 해당 이슈: Redis Lua scripting: multiple security issues #5017 - SCAN, SSCAN, HSCAN, ZSCAN 명령이 키 또는 element를 빠트릴 수 있는 버그를 수정하였습니다.
이것은 항상 발생하는 것은 아니고 키를 관리하는 버킷(bucket)이 줄어들어 Rehash 중인 동안
SCAN 명령을 실행하면 발생할 수 있습니다.
버킷을 줄이는 경우는 버킷 수보다 키가 10% 이하일 때 실행합니다. 그러니까 키를 대량 삭제했을 경우 버킷을 줄입니다. SCAN 명령은 버전 2.8.0(2013년 11월 22일 발표)에 구현되어 사용했는데 거의 5년만에 버그가 발견되었습니다. 이는 위에 설명한 것과 같이 이 버그가 발생할 확률이 적은 것도 있고, SCAN 명령 특성상 버그가 발견될 확률이 적었던 것으로 생각됩니다.
» 해당 이슈: dictScan() can't scan all buckets when dict is shrinking. #4906
- 부분동기화(PSYNC2) 관련 버그를 수정했습니다.
내용: RDB 파일을 저장할 때 만료된(expire) 키를 저장하지 않던 것을 저장하도록 수정했습니다. 새로 추가된 클론 노드 또는 failover 후에 발생한 클론 노드에서 RDB 파일을 받아 expire된 키를 적절히(properly) 삭제하도록 했습니다. - Sentinel: 어떤 경우 마스터 다운을 즉각 인지하지 못하는 버그를 수정했습니다.
- auth 명령은 보안 이슈로 redis history에 저장되지 않도록 수정했습니다.
- redis-cli -a passwd를 입력하면 "안전하지 않다(Warning: Using a password with '-a' option on the command line interface may not be safe.)"는 경고를 내보냅니다. 이 명령 역시 shell history에 남기 때문에 보안상 안전하지 않습니다.
- redis-cli -r N: N이 음수일 경우 overflow 될 때까지 실행되는 것을 수정했습니다. 이제 음수를 입력하면 실행되지 않습니다.
» 관련된 자세한 정보: Redis Lua scripting: several security vulnerabilities fixed
Redis 4.0.9 - 2018년 3월 26일(월) CRITICAL 필수
- AOF를 'always'로 설정하고 사용하는 사용자는 필수 업그레이드입니다. » AOF 설정 관련 정보 » 전반적인 Persistence 관련 정보
- Latency Monitor 관련 버그 수정
Redis 4.0.8 - 2018년 2월 2일(금) CRITICAL 필수
- Redis Cluster 사용자는 필수 업그레이드입니다. » Redis Cluster 관련 정보
Redis 4.0.7 - 2018년 1월 24일(수) MODERATE 보통
Redis 4.0.6 - 2017년 12월 4일(월) CRITICAL 필수
- 4.0.x 사용자, 특히 4.0.4, 4.0.5 사용자는 필수 업그레이드입니다.
- 주요 수정 내용 관련 정보 » PSYNC2(부분 동기화) » Quicklists
Redis 4.0.5 - 2017년 12월 1일(금) CRITICAL 필수
- Replication PSYNC2(부분 동기화) 관련 수정, 그러나 더 많은 문제가 발견되어 바로 4.0.6으로 업그레이드 되었습니다.
Redis 4.0.4 - 2017년 11월 30일(목) 오후 6시 CRITICAL 필수
- Replication PSYNC2(부분 동기화) 관련 수정, 그러나 문제가 발견되어 다음 날 4.0.5으로 업그레이드 되었습니다. 같은 날에 두 번 Release되기는 처음입니다.
Redis 4.0.3 - 2017년 11월 30일(목) 오후 1시 CRITICAL 필수
- Replication PSYNC2(부분 동기화) 관련 수정, 그러나 문제가 발견되어 바로 4.0.4으로 업그레이드되었다.
Redis 4.0.2 - 2017년 9월 21일(목) HIGH 높음
- 마스터와 클론 사이 PSYNC2(부분 동기화) 버그 수정 » 해당 이슈: Redis 4.x PSYNC2 & RDB: data inconsistency between master and slave, bug located #4316
- AOF, SLOWLOG 관련 수정
Redis 4.0.1 - 2017년 7월 24일(월) MODERATE 보통
- Redis Cluster 사용자는 업그레이드하기를 권고합니다.
Redis 4.0.0 GA(General Availability) - 2017년 7월 14일(금) CRITICAL 필수
- 새로운 4.0 복제 엔진 » 복제에 관한 일반적인 정보
- Expire된 키 삭제와 관련된 LAZYFREE 파라미터 추가
- HSET: 여러 개 field와 value를 입력할 수 있도록 수정했습니다.
- DEBUG DIGEST
- 그 외 많은 개선과 버그 수정이 있었습니다.
Redis 4.0.0-RC3(Release Candidate) - 2017년 4월 22일(토) HIGH 높음
- MIGRATE 시 TTL 정보(Expire time 정보)를 잃어버리는 버그 수정 » MIGRATE
- Redis Cluster에서 노드가 살아있는지 죽었는지를 확인하는 로직이 메시지 교환을 훨씬 적게하는 방식으로 개선되었습니다. » Heartbeat Check
- ZipList 버그 수정 » Internal ZipList
- Copy-on-Write 버그 수정 » Copy-on-Write 분석
- ZADD 버그 수정 » ZADD
- Solaris 지원 개선
- freeMemoryIfNeeded() 개선
- GEO 버그 수정
- Jemalloc 안전한 버전으로 내림(downgrade)
- redis.conf에 있는 lua-time-limit 파라미터 무시함
Redis 4.0.0-RC2(Release Candidate) - 2016년 12월 6일(화) LOW 낮음
- GEORADIUS 버그 수정
- 모듈 시스템(Module System) 버그 수정
Redis 4.0.0-RC1(Release Candidate) - 2016년 12월 2일(금) 4.0의 새로운 기능들
- 모듈 시스템(Module System): Redis 기능을 확장하고 새로운 데이터 유형을 구현할 수있는 모듈을 작성할 수 있게 되었습니다.
4.0에서 가장 크게 추가된 기능이다.
» 모듈 시작 - Partial Replication (PSYNC) version 2: Failover되어 마스터가 바뀌었을 때 클론(슬레이브)들이 Full-Replication하는 것이 기존 방식이였다. 새 방식에서는 바뀐 데이터만 받는 Partial Resynchronization로 개선되었다. » Partial Resynchronization
- Expire된 키를 제거하는 알고리즘 개선: » LRU(Least recently used) -> LFU (Least Frequently Used)
- 별도 쓰레드로 키 삭제: 서버 성능 개선 » UNLINK » FLUSHDB Async » FLUSHALL Async
- 혼합된 RDB-AOF 포멧: Rewrite와 로드(reload)가 빨라졌다.
- MEMORY: 메모리 사용량을 자세히 볼 수 있는 새 명령이 추가되었다.
- Redis Cluster NAT(Network Address Translation) / Docker 지원: 이를 위해 Redis Cluster Bus Protocol이 변경되었습니다. 그래서 3.2와 호환되지 않습니다. redis.conf에 announce-ip/port 파라미터가 추가되었습니다.
- 온라인 메모리 조각 모음 기능 추가: CONFIG SET activedefrag yes -> 자세한 내용은 redis.conf를 보세요.
- SWAPDB 명령 추가: ability to completely and immediately (no latency) replace two Redis databases.
- LPUSHX / RPUSHX 명령에 value를 여러 개 입력할 수 있도록 수정
- INFO Persistence에 rdb, aof COW(Copy-on-Write) size 추가
- 이전 버전보다 메모리를 좀 적게 사용합니다.
- 3.2와 호환되지 않거나 달라져서 주의해야 할 것들
- Redis Cluster Bus Protocol 개선으로 3.2와 호환되지 않습니다.
- CLUSTER NODES 명령의 출력에 "@bus-port"가 추가되었습니다. 프로그램 내에서 사용한다면 관련 코드를 수정하세요. 가능하면 CLUSTER SLOTS 명령을 사용하세요.
- 쓰기 가능한(Writable) 클론(슬레이브)는 쓰기를 하위 클론에 전파하지 않습니다.
- RDB 파일 포멧이 변경되었습니다. 4.0은 3.2 RDB 파일을 읽을 수 있습니다.
- INFO 출력 형식 일부가 변경되었습니다.
- SLOWLOG: 정보에 Client name과 IP:Port 항목을 추가했습니다.
- GEODIST, GEOPOS, GEOHASH 명령에서 존재하지 않는 키에 대한 리턴 값이 변경되었습니다.
- 일부 로그 포멧이 변경되었습니다.
<< Release Notes 5 | Release Notes 4 | Release Notes 3 >> |
---|
Email
답글이 올라오면 이메일로 알려드리겠습니다.