Redis Release Notes

레디스 서버 교육 신청 레디스 정기점검/기술지원
Redis Technical Support
레디스 엔터프라이즈 서버
Redis Enterprise Server

Redis 3.2.x Release Notes

Redis 3.2.12 - 2018년 6월 13일(수)       CRITICAL 필수        

  • 이것은 4.0.10에 발표된 EVAL 관련 보안 이슈와 몇 가지 버그를 수정해서 3.2 사용자를 위한 버전입니다.
  • EVAL 명령(Lua scripting engine) 관련 보안 이슈 수정: 자세한 내용은 4.0.10을 보세요.
  • SCAN 명령이 키를 빠뜨릴 수 있는 버그 수정
  • AOF fsync = always 관련 버그 수정: 4.0.9에 적용된 것입니다.

Redis 3.2.11 - 2017년 9월 21일(목)       HIGH 높음        

  • 종료(Shutdown)하기 전에 AOF를 flush하도록 수정했습니다.

Redis 3.2.10 - 2017년 7월 28일(금)       MODERATE 보통        

Redis 3.2.9 - 2017년 5월 17일(월)       LOW 낮음        

  • 몇 가지 작은 버그를 수정했습니다.

Redis 3.2.8 - 2017년 2월 12일(일)       CRITICAL 필수        

  • Jemalloc 4.4.0이 특정 조건에서 데드락(Deadlock)을 발생시킬 수 있어서 이전 버전(4.0)으로 되돌렸습니다.     » 관련 글
  • MIGRATE: 소켓(socket) 오류 후 서버가 크레시(crash)되는 버그 수정     » 관련 글

Redis 3.2.7 - 2017년 1월 31일(화)       HIGH 높음        

  • Redis-trib.rb로 reshard시 Expire time 설정 오류로 expire time이 설정되지 않은 키가 삭제될 수 있는 버그를 수정했습니다.
    Redis Cluster Reshard와 관련있으므로 Redis Cluster 사용자는 반드시 업그레이드하시기 바랍니다.
    임시 방편으로 redis-trib.rb 소스에서 MigrateDefaultPipeline = 10을 1로 바꾸어서 사용하세요.
  • 보안: "Cross Protocol Scripting" 공격인 'host:'와 'post' 명령(?)이 들어오면 securityWarningCommand() 이 실행되어 서버 로그에 "# Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due t o an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection aborted." 이런 메시지를 남기고 연결을 끊는 기능을 추가했습니다.     » 관련 글
  • ZipList 버그 수정: LINSERT 같이 리스트 중간에 데이터를 조작하는 명령과 관련있습니다.    
    » ZipList 내부 구조
  • Jemalloc을 4.0에서 4.4.0으로 업그레이드했습니다. 4.4.0은 메모리 사용과 회수(reclaim) 기능이 개선되었습니다.     » Jemalloc

Redis 3.2.6 - 2016년 12월 6일(화)       MODERATE 보통        

  • BITFIELD 버그 수정
  • GEORADIUS 버그 수정
  • Redis Cluster: 특정 ext4(extended file system 4)에서 발생할 수 있는 버그 수정

Redis 3.2.5 - 2016년 10월 26일(수)       LOW 낮음        

  • 이 릴리즈는 단지 컴파일 오류만 수정한 것입니다.

Redis 3.2.4 - 2016년 9월 26일(월)       CRITICAL 필수        

Redis 3.2.3 - 2016년 8월 2일(화)       MODERATE 보통        

  • AOF Rewrite가 진행중인 동안 복제를 위한 bgsave가 지연되는 부분 수정
  • redis-cli history 파일 관련 보안 이슈 수정

Redis 3.2.2 - 2016년 7월 28일(목)       MODERATE 보통        

  • LSET 명령 버그 수정
  • Sentinel 이 여러 마스터를 모니터링 할 때 주소(address) 업데이트 후에 Crash 될 수 있는 버그 수정
  • GEORADIUS 버그 수정
  • 클론(슬레이브)는 slave-announce-ip, slave-announce-port를 사용해서 Docker와 NAT를 지원합니다.
  • RDB check utlity가 Redis의 일부가 되었습니다.
  • CONFIG GET 명령이 대소문자를 구분하지 않도록 수정되었습니다.

Redis 3.2.1 - 2016년 6월 17일(금)       HIGH 높음        

  • Sentinel 사용자 필수 업그레이드: Sentinel 연결 공유(connection sharing/InstanceLink) 관련 버그(old master를 인식하지 못하는) 수정   -» 이 버그는 3.2.0에서 연결 공유 기능을 추가하면서 발생했습니다. 따라서 3.0.x 는 이런 버그가 발생하지 않습니다.
  • tcp-keepalive 파라미터 default 값이 0에서 300으로 변경되었습니다. 즉 TCP keep alive가 활성화된 것입니다.
  • 키 Access time만 갱신하는 TOUCH 명령 추가, 이제 TTL, TYPE 명령은 Access time을 변경하지 않습니다.
  • CONFIG SET list-max-ziplist-size 명령에서 음수를 지정할 수 없습니다.   redis.conf파일에서는 가능합니다.
  • BITFIELD 버그 수정
  • GEORADIUS 명령 버그 수정
  • RESTORE 이전 버전에서 만들어진 dump을 읽을 수 있도록 수정
  • BITCOUNT:   start와 end 둘 다 음수이고 start > end 이면 널을 리턴하도록 수정

Redis 3.2.0 - 2016년 5월 6일(금)       HIGH 높음        

  • 3.2의 가장 큰 변화로 List Type의 내부 저장 방식을 메모리를 많이 절약할 수 있는 Quicklist로 바꾸었다. 관련해서 list-max-ziplist-entries, list-max-ziplist-value 파라미터가 없어지고 list-max-ziplist-size, list-compress-depth 파라미터가 추가되었다.
    » 추가된 파라미터와 Quicklist 내부 구조는 여기를 보세요.
  • 보안강화를 위해서 PROTECTED-MODE 파라미터가 추가되었고 BIND 파라미터가 활성화 되었다. 디폴트 그대로 사용하면 원격접속이 되지 않으므로 BIND에 IP를 추가해야 한다.   » 관련 글
  • BITFIELD 명령 추가
  • CONFIG GET AOF나 RDB를 로딩중일 때도 CONFIG GET 명령을 실행할 수 있도록 수정했습니다.
  • DEBUG 명령에 새 기능 추가
  • Redis-cli: 명령을 입력하면 옵션을 보여주는 기능이 추가되었다.
  • GEORADIUS 명령에 STORE, STOREDIST 옵션 추가
  • CLUSTER SLOTS 명령의 출력에 노드 ID를 추가했습니다.
    프로그램 내에서는 Cluster Nodes 보다 Cluster Slots API를 사용하세요. Cluster Nodes는 향후 출력 내용이 자주 변경될 수 있습니다.
  • Nanosecond 변환 오류 수정: 1 microsecond = 10000(10e3) -» 1000(1e3) nanoseconds
  • Redis-cli 종료 시 Command history file을 지우지 않고 그대로 두어 다음 연결 때 사용할 수 있도록 수정했습니다.
  • redis-trib.rb 버그 수정
  • INFO commandstats 수정: GEOADD 명령을 실행하면 내부적으로 ZADD가 실행되어 commandstats 리포트에 ZADD가 표시되었던 것을 GEOADD가 표시되도록 수정했습니다.
  • Redis Cluster 개선: 마스터 A의 모든 슬롯을 마스터 B에게 보내면 A의 클론(슬레이브) C는 B의 클론으로 변경된다. 여기서 B에게 주었던 슬롯을 A가 다시 가져오면 클론 C는 원래대로 A의 클론이 된다.
      » 관련 글
    • 초기 상태
      Master 6001 (Slots 0-5460) -> Slave 6004
      Master 6002 (Slots 5461-10922) -> Slave 6005
      Master 6003 (Slots 10923-16383) -> Slave 6006
    • Step 1: Master 6001의 모든 슬롯을 6002로 보냄(reshard) -> 6004가 6002의 슬레이브가 됨
      Master 6001 -> No slaves
      Master 6002 (Slots 0-10922) -> Slave 6005
                                                        -> Slave 6004
      Master 6003 (Slots 10923-16383) -> Slave 6006
    • Step 2: 수정 전 6002의 슬롯을 원래대로 6001에게 보냄 -> 슬레이브 6004는 그대로 6002의 슬레이브로 남아 있음.
      Master 6001 (Slots 0-5460) -> No slaves
      Master 6002 (Slots 5461-10922) -> Slave 6005
                                                                -> Slave 6004
      Master 6003 (Slots 10923-16383) -> Slave 6006
    • Step 2: 수정 후 6002의 슬롯을 원래대로 6001에게 보냄 -> 슬레이브 6004가 6001의 슬레이브로 변경됨.
      Master 6001 (Slots 0-5460) -> Slave 6004
      Master 6002 (Slots 5461-10922) -> Slave 6005
      Master 6003 (Slots 10923-16383) -> Slave 6006
    • 만약 Step 1에서 슬레이브 6005가 다운되어 6002의 슬레이브가 6004 하나만 있는 상태이면 6002의 슬롯 일부를 6001로 보내(reshard)도 6004는 6002의 슬레이브로 남아있다.

Redis 3.2.0-RC3 - 2016년 1월 28일(목)       MODERATE 보통

  • INFO avg_ttl 개선
  • Sentinel 개선
  • Redis Cluster: Cluster Bus를 통한 address 업데이트가 개선되어 불필요한 핸드쉐이크가 발생하지 않도록 수정되었습니다.

Redis 3.2.0-RC2 - 2016년 1월 25일(월)       MODERATE 보통

Redis 3.2.0-RC1 - 2015년 12월 23일(수)      


Redis 3.0.x Release Notes

Redis 3.0.7 - 2016년 1월 25일(월)       MODERATE 보통        

  • 중요한 Cluster 버그를 수정했으므로 Cluster 사용자는 업그레이드하세요.
  • MIGRATE multiple keys 관련 버그 수정
  • Redis Cluster node crash 버그 수정: node->slaveof 포인터 처리 오류
  • Redis-trib rebalance weight 관련 수정
  • Redis-trib fix 명령을 지원하기 위해 CLUSTER BUMPEPOCH 명령 추가
  • 너무 깊은 중첩된 객체를 프린트할 때 Lua 디버거 crash 관련 수정
  • Redis-cli에서 SCRIPT DEBUG 명령을 사용하여 디버깅 모드로 전환할 수 있습니다.
  • PROTECTED-MODE 구현: 아직 redis.conf에 protected-mode 파라미터 추가되어 있지는 않다.

Redis 3.0.6 - 2015년 12월 18일(금)       MODERATE 보통        

Redis 3.0.5 - 2015년 10월 15일(목)       MODERATE 보통        

Redis 3.0.4 - 2015년 9월 8일(화)       HIGH 높음        

Redis 3.0.3 - 2015년 7월 17일(금)       LOW 낮음        

  • 클라이언트가 수천개일 때 BLPOP 같은 blocking 명령 관련 버그 수정
  • MIGRATE "creating socket: Invalid argument" 버그 수정     이슈 #2609   이슈 #2612
  • ZADD 버그 수정
  • CONFIG RESETSTATS 명령에서 aof_delayed_fsync를 reset 하도록 수정
  • PFCOUNT 버그 수정

Redis 3.0.2 - 2015년 6월 4일(목)       HIGH 높음        

Redis 3.0.1 - 2015년 5월 5일(화)       MODERATE 보통        

  • SENTINEL 메모리 누수 수정(hiredis 수정)
  • Lua 출력 버퍼 관련 수정

Redis 3.0.0 - 2015년 5월 1일(금)       3.0의 새로운 기능들    

  • Redis 3.0의 가장 큰 변화는 Redis Cluster 도입입니다.
  • "Embedded string" 도입으로 CPU Cache miss가 줄어들어 특정 조건에서 속도가 크게 향상되었습니다.
  • AOF Rewrite 에서 "마지막 쓰기"의 양을 줄여서 대기 시간을 최소화했습니다.
  • 키 퇴출 LRU 알고리즘을 크게 개선했습니다.
  • WAIT 명령 추가
  • MIGRATE COPY, REPLACE 옵션 추가했고, Connection caching를 이용해서 키 마이그레이션 속도 향상
  • CLIENT PAUSE 명령 추가
  • BITCOUNT 성능 향상
  • CONFIG SET 단위 허용
  • INCR 성능 향상
  • Log 포멧 약간 변경
  • Diskless Replication 수정

Redis 3.0.0-RC6(2.9.106) - 2015년 3월 24일(화)

Redis 3.0.0-RC5(2.9.105) - 2015년 3월 20일(금)

Redis 3.0.0-RC4(2.9.104) - 2015년 2월 13일(금)

  • LRU 퇴출(eviction) 관련 수정
  • Redis-cli CSV output NIL 관련 수정
  • 키 rehashing 동안 LRU eviction이 발생했을 때 응답시간이 늦어지는 버그 수정
    이 버그는 2.8에서는 발생하지 않고 3.0에서 LRU 알고리즘을 수정하면서 생긴것입니다.
  • Redis-cli --latency-dist 기능 추가
  • Redis-cli --lru-test 기능 추가
  • Redis-cli --stat기능 추가: Redis 서버가 데이터를 loading할 때 'child' 항목에 'LOAD'로 보여준다.
  • CONFIG SET 단위 지원

Redis 3.0.0-RC3(2.9.103) - 2015년 1월 30일(금)

  • AOF: Child process가 pipe를 통해 Parent process에게 다을 수 없을 때 발생하는 문제(segfaults) 수정
  • Lua 스크립트 엔진 관련 수정
  • Redis Cluster
    • 내부 노드 처리 관련 수정
    • 메모리 누수, 이중 해제(free)관련 버그 수정
    • /dev/urandom 보다 가벼운 unique ID 생성 방법 적용
    • 장애 감지 및 클러스터 정보 전파 속도 향상(개선)
    • CLUSTER count-failure-reports 명령 추가

Redis 3.0.0-RC2(2.9.102) - 2015년 1월 13일(화)

  • Diskless replication backport
  • Lua backport
  • Transparent Huge Pages 경고 추가
  • PUBLISH cluster bus message count field 수정

Redis 3.0.0-RC1(2.9.101) - 2014년 10월 9일(목)        

  • Foreground Redis Server에 Ctrl-C를 했을 때 정상적으로 SHUTDOWN 되도록 수정, 기타 여러가지 작은 수정     자세한 내용은 이슈 #1906을 참조하세요.
  • SAVE 명령이 AOF나 클론(슬레이브)로 전송되지 않도록 수정
  • Redis-check-aof utility를 실행하지 않고 잘렸으나(truncated) 손상되지 않은(not corrupted) AOF 파일을 load 할 수 있도록 redis.conf에 aof-load-truncated 파라미터 추가, 디폴트 값 yes
  • DEBUG POPULATE 옵션 추가
  • INCR 개선
  • Redis Cluster
    • Minority 파트 감지(detect) 로직 개선
    • 베타(beta) 버전에서 안정적(stable)인 버전으로 승격했습니다.
    • Pub/Sub 추가
  • Sentinel
    • 메모리 누수(leak)와 치명적인 버그 수정
    • NAT(Network Address Translation) 네트워크 환경에서 사용할 수 있도록 sentinel.conf에 sentinel announce-ip , sentinel announce-port 파라미터를 추가했다.

Redis 3.0.0-Beta 8(2.9.57) - 2014년 7월 29일(화)

Redis 3.0.0-Beta 7(2.9.56) - 2014년 6월 30일(월)

  • COMMAND 명령 추가
  • Jemalloc 3.6.0 적용
  • CLUSTER NODES: 노드 주소를 업데이트 할 때 NOADDR 플래그를 지우도록 수정
  • CLUSTER SLOTS: 클러스터 클라이언트가 클러스터 정보를 얻는 API,   CLUSTER NODES의 출력은 향후 변경될 수 있으므로 CLUSTER SLOTS을 사용하세요.
  • SENTINEL: 몇 가지 버그가 수정, 개선되었고 ROLE 명령이 추가되었습니다.
  • 초기 AOF가 쓰여지고 있다면 SHUTDOWN이 최소되도록 수정

Redis 3.0.0-Beta 6(2.9.55) - 2014년 6월 9일(월)

  • Software watchdog 버그 수정
  • Lua 스크립트 개선
  • Redis.conf에 있는 min-slaves-* 파라미터 관련 심각한 버그 수정
  • Beta 3에 도입된 CLUSTER SET-CONFIG-EPOCH 심각한 버그 수정

Redis 3.0.0-Beta 5(2.9.54) - 2014년 5월 26일(월)

  • Redis Cluster 관련 2 가지 버그 수정

Redis 3.0.0-Beta 4(2.9.53) - 2014년 5월 23일(금)

  • Lua 스크립트 엔진 성능 개선
  • 현재(current) 노드의 역할을 표시하기 위해 로그 포멧을 약간 변경했다.
  • HyperLogLog cache flag 불필요한 계산 부분 수정
  • Redis Cluster
    • Redis-trib Import 기능 추가: 독립형(standalone) Redis 인스턴스에서 데이터를 Cluster 노드로 가져오는 기능
    • Redis-trib Fix 기능 추가: 오픈된(migrating/importing 예약되어있고 처리되지 않은) 슬롯을 수정
    • CLUSTER FAILOVER FORCE 구현
    • CLUSTER RESET 구현
    • CLUSTER MEET 유효하지 않은 주소(ip port)에 대한 오류 메시지 개선
    • cluster-slave-validity-factor 파라미터 추가, Config Set으로 변경 가능
    • 대량 클러스터 노드를 수략(accept)할 수 있도록 개선
    • 수동 장애조치(manual failover) 시에는 마스터와 클론(슬레이브)간 연결 단절 시간(data_age)을 체크하지 않도록 수정, 자동 장애조치 시에는 일정 시간 이상 단절된 클론은 후보에서 제외된다.
  • Sentinel
    • 옵저버(observer) 서버가 다른 센티널로 부터 새 마스터 정보를 받는 이벤트(+config-update-from)를 추가했고 로그를 남기도록 수정
    • 장애조치가 다시 시작되면 로그를 남기도록 수정     » 장애조치와 리더 선출 관련 정보
    • Sentinel.conf 에 working directory 파라미터 추가 "dir /tmp"

Redis 3.0.0-Beta 3(2.9.52) - 2014년 5월 5일(월)

  • HyperLogLog: 새 Data Structure
  • LRU 알고리즘(algorithm)의 정확도가 크게 향상되었다.
  • Redis Cluster
  • Sentinel
    • Redis 인스턴스를 통하지 않고, Sentinel 인스턴스간 메시지를 보낼 수 있도록 수정
    • 중요 상태 정보를 디스크에 저장하기 때문에 Crash-Recovery 상황에서도 안전하도록 수정
    • CLIENT SETNAME을 사용해서 Redis 서버에 접속한 센티널 클라이언트 이름을 설정하도록 했다.   따라서 다른 클라이언트들이 CLIENT LIST 명령으로 센티널 클라이언트를 확인할 수 있다.
    • 실패 감지(failure detection) 개선

Redis 3.0.0-Beta 2(2.9.51) - 2014년 3월 11일(화)

  • 복제(replication) 중 링크가 끊기는 버그 수정, 이 버그로 불필요한 재 동기화가 발생하거나 무한 루프가 발생할 수 있었습니다.
  • AOF appendfsync 가 'everysec'나 'no'인 상태에서 AOF fsync 에러( 예, 디스크 공간이 없을 경우)가 발생해도 Redis 서버는 다운되지 않고 계속 실행되도록 수정했다. 단 데이터베이스는 write 명령을 수행할 수 없는 read-only 모드로 변경된다.   디스크 문제가 해결되어 다시 AOF fsync를 할 수 있으면 데이터베이스도 write 모드로 변경된다.
  • Config file Path 오류 수정, 이 버그는 redis.conf 파일안에 'dir' 파라미터가 있을 경우에 발생했습니다.
  • Redis-cli: SYNC, PSYNC를 호출하면 자동으로 슬레이브 모드(--slave mode)로 전환되도록 수정
  • BITCOUNT CPU 아키텍처 관련 개선
  • EVALSHA 스크립트 캐시 버그를 수정했습니다. 특정 조건에서 실행 된 스크립트가 AOF/슬레이브로 올바르게 전파되지 않을 수 있었습니다.   자세한 내용은 이슈 #1549를 참조하세요.
  • MONITOR 모드에서 SLOWLOG 시간 계산 버그 수정
  • Redis-cli --bigkeys 구현에 RANDOMKEY 대신 SCAN을 사용하도록 수정했고 Pipelining 사용하도록 해서 훨신 빨라졌습니다.
  • Redis-cli --intrinsic-latency mode 구현: kernel/hypervisor로 인한 시스템 대기 시간을 측정할 수 있다.
  • CONFIG REWRITE를 실행하면 로그를 남기도록 수정
  • Redis Cluster
    • 클러스터 노드가 redis.conf bind 파라미터 IP를 사용하도록 수정
    • 'Importing' 슬롯을 CLUSTER SETSLOT NODE 명령으로 확정하면 특별한 경우 configEpoch을 0으로 증가시키도록 수정
    • Cluster Bus 포트는 항상 base port + 10000을 사용하므로 해당 포트를 반드시 오픈해야 한다.
    • ZUNIONSTORE, ZINTERSTORE, SORT: 키 추출 알고리즘 수정
    • CLUSTER-NODE-TIMEOUT 시간이 매우 적을 때(수 밀리초)도 장애 조치가 안정적으로 실행되도록 개선
    • 클러스터 노드에서는 SORT 명령의 BY/GET 옵션을 사용하지 못하도록 수정
    • 마스터에서 클론 노드로 역할이 바뀔 때 'importing'/'migrating' 상태를 초기화하도록 수정
    • 지정한 키들이 모두 같은 슬롯안에 있을 때 멀티 키 오퍼레이션을 허용
    • Redis-trib call 명령 추가
  • Sentinel
    • Sentinel event 추가: SENTINEL MONITOR/REMOVE +/-monitor, SENTINEL SET +set
    • SHUTDOWN 명령 도입
    • "IDONTKNOW" 에러 메시지 삭제

Redis 3.0.0-Beta 1(2.9.50) - 2014년 2월 11일(화)

  • 이전 버전인 2.8에서 3.0이 되면서 바뀐 점
    • 로그 포멧 변경: 각 라인 앞에 들어가는 PID 형식이 '[pid]' 에서 'pid:?'로 변경되었습니다.
      pid: process id
      ?: M -> Master, S -> Slave, C -> Child process(C로 표시될 때는 pid도 변경됨), X -> Sentinel
    • maxmemory-policy 파라미터의 기본값이 'volatile-lru' 에서 'noeviction'으로 변경되었습니다.
  • 2014년 2월 11일(화) Beta 1 부터 시작된 업그레이드 작업은 15번의 업데이트 끝에 15개월 후인 2015년 5월 1일(금)에 정식 3.0이 나왔습니다.   가장 큰 변화는 Redis Cluster 구현입니다.

<< Release Notes 4 Release Notes 3 Release Notes 2 >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.