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    
    » 수정 내용(commit): Set repl_down_since to zero on state change.    
  • 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 명령 보기    

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    
    » 관련된 자세한 정보: Redis Lua scripting: several security vulnerabilities fixed    
  • 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 4.0.9 - 2018년 3월 26일(월)       CRITICAL 필수        

Redis 4.0.8 - 2018년 2월 2일(금)       CRITICAL 필수        

Redis 4.0.7 - 2018년 1월 24일(수)       MODERATE 보통        

Redis 4.0.6 - 2017년 12월 4일(월)       CRITICAL 필수        

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 높음        

Redis 4.0.1 - 2017년 7월 24일(월)       MODERATE 보통        

  • Redis Cluster 사용자는 업그레이드하기를 권고합니다.

Redis 4.0.0 GA(General Availability) - 2017년 7월 14일(금)       CRITICAL 필수        

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 답글이 올라오면 이메일로 알려드리겠습니다.