redis_release2
Redis Release Notes
Redis Server 教育 Redis Developer Course |
Redis 定期点検/技術支援 Redis Technical Support |
Redis エンタープライズサーバ Redis Enterprise Server |
---|
Redis 2.8.x Release Notes
Redis 2.8.24 - 2015년 12월 18일(금) MODERATE 보통
- Lua: lua_struct.c getnum() 보안 이슈 수정
- processCommand() 경쟁 상태(race condition) 수정 자세한 내용은 이슈 #2948 참조하세요.
- SIGSEGV/SIGBUS 관련 로그 추가
- 이 업데이트는 같은 날 발표된 3.0.6에도 포함되어 있습니다.
Redis 2.8.23 - 2015년 10월 15일(목) MODERATE 보통
- MOVE 명령이 TTL(만료 시간) 정보도 같이 이동하도록 수정
- Redis-cli --pipe mode 버그 수정
- 이 업데이트는 같은 날 발표된 3.0.5에도 포함되어 있습니다.
Redis 2.8.22 - 2015년 9월 8일(화) HIGH 높음
- 부분 동기화(PSYNC)와 Diskless 복제 버그 수정
- 복제 불일치 버그 수정 자세한 내용은 이슈 #2694를 참조하세요.
- Redis-cli --scan 관련 버그 수정
- Sentinel 관련 버그 수정 자세한 내용은 여기를 참조하세요.
- 이 업데이트는 같은 날 발표된 3.0.4에도 포함되어 있습니다.
Redis 2.8.21 - 2015년 6월 4일(목) HIGH 높음
- 주요 보안 문제 수정 » 관련 자료
- SENITNEL CKQUORUM, FLUSHCONFIG 수정
- 이 업데이트는 같은 날 발표된 3.0.2에도 포함되어 있습니다.
Redis 2.8.20 - 2015년 5월 5일(화) MODERATE 보통
- SENTINEL 메모리 누수 수정(hiredis 수정) - 버전 3.0.1에도 적용
- Lua 출력 버퍼 관련 수정 - 버전 3.0.1에도 적용
- Diskless Replication 수정 - 버전 3.0.0에도 적용
- Blocking operation 관련된 복제 버그 수정 자세한 내용은 이슈 #2473를 참조하세요. - 버전 3.0.0-RC6에도 적용
- CONFIG SET activerehashing 지원 - 버전 3.0.0-RC5에도 적용
- Redis-cli --latency-dist 수정 - 버전 3.0.0-RC5에도 적용
- AOF: Child process가 pipe를 통해 Parent process에게 다을 수 없을 때 발생하는 문제(segfaults) 수정 - 버전 3.0.0-RC3에도 적용
- Lua 스크립트 엔진 관련 수정 - 버전 3.0.0-RC3에도 적용
- INFO loading stats 수정
- Rdb.c rdbSaveToSlavesSockets() 메모리 누수(leak) 수정
Redis 2.8.19 - 2014년 12월 16일(화) LOW 낮음
- MONITOR 에서 admin 명령은 기록하지 않도록 수정
- Lua cmsgpack lib 최신 버전으로 업데이트
- Redis-benchmark -I (idle mode) 수정
- whatisdoing.sh 업데이트
- 기타 여러가지 작은 수정이 있음
Redis 2.8.18 - 2014년 12월 4일(목) LOW 낮음
- Linenoise가 VT100 호환 가능하도록 업데이트
- Redis-cli: 긴 시간 후에도 종료되지 않도록 수정
- PFCOUNT를 클론(슬레이브) 노드에서도 사용할 수 있게 수정
- syslog가 활성화된 경우 ASCII logo를 보이지 않게 수정. Redis는 이제 Enterprise 급 제품입니다.
- 디스크를 사용하지 않는 복제(Diskless replication) 실험적 도입
- Tcp-backlog와 /proc/sys/net/core/somaxconn를 체크해서 다르면 로그에 경고를 남김
- Transparent Huge Pages(THP)를 감지하고 로그에 남기는 기능 추가
- 많은 Lua scripting 개선
- DEBUG POPULATE 옵션 추가 - 버전 3.0.0-RC1에도 적용
Redis 2.8.17 - 2014년 9월 19일(금) HIGH 높음
- Sentnel: Memory 누수(leak) 관련 hiredis library 버그 수정 - 버전 3.0.1에도 적용
Redis 2.8.16 - 2014년 9월 16일(화) HIGH 높음
- 손상된 AOF 파일(truncated AOF file)
- 손상되었다는 의미는 명령이 완벽히 종료되지 않고 일부분만 저장되어 있다는 뜻이다. 따라서 정상적으로 로드할 수 없다.
- AOF 재작성(rewrite)가 실행되면 자동으로 수정됩니다
- 손상된 상태의 AOF 파일로 레디스 서버를 재 시작하면 AOF를 로드하지 못합니다. 손상된 AOF 파일을 수정하려면 redis-check-aof (--fix 옵션 없이 실행) 유틸리티를 실행하면 AOF 파일에 손상된 부분이 표시됩니다. 이 부분을 제거/수정하고 레디스 서버를 다시 시작하면 됩니다.
- SAVE 명령이 AOF나 클론(슬레이브)로 전송되지 않도록 수정 - 버전 3.0.0-RC1에도 적용
Redis 2.8.15 - 2014년 9월 12일(금) HIGH 높음
- Sentinel: 치명적인 버그 수정, Majority 계산 오류: 센티널 사용자는 업그레이드 필수
- SCAN 개선
- 손상된(truncated) AOF 파일도 읽어들일 수 있도록 redis.conf에 aof-load-truncated 파라미터가 추가되었습니다.
- NAT(Network Address Translation) 네트워크 환경에서 사용할 수 있도록 sentinel.conf에 sentinel announce-ip , sentinel announce-port 파라미터를 추가했다. - 버전 3.0.0-RC1에도 적용
Redis 2.8.14 - 2014년 9월 1일(월) HIGH 높음
- Background Save Child Process가 죽는 버그 수정
- AIX 컴파일 수정
- SIGINT 처리 개선
- SDS header에 있는 len/free data type을 int(2GB)에서 unsigned int(4GB)로 변경
- Sentinel IPv6 수정
- 20억개 이상의 키(2 billion of keys) 데이터베이스 테스트
- Lua scripting 버그 수정
- ZUNIONSTORE 속도 개선 - 버전 3.0.0-Beta 8에도 적용
- 빠른 ll2string() 구현(Util.c) » 관련 자료 - 버전 3.0.0-Beta 8에도 적용
- Redis-benchmark AUTH 지원
Redis 2.8.13 - 2014년 7월 14일(월) LOW 낮음
- Latency Monitor 기능 추가 -> 응답시간에 대한 자세하고 다양한 측정/분석 방법이 생겼다.
- COMMAND 명령 추가
- CLIENT KILL 개선
- PowerPC를 위한 HAVE_ATOMIC 활성화
Redis 2.8.12 - 2014년 6월 23일(월) CRITICAL 필수
- 주의: Lua에서 SELECT 명령으로 DB를 선택할 수 없도록 수정되었습니다. 따라서 이 부분은 이전 버전과 호환되지 않습니다.
- Sentinel
- 장애 조치(특히 수동 장애 조치) 관련 버그 수정 -> Sentinel 사용자는 필수 업그레이드
- 장애 조치(failover)후 가능한 빨리 'HELLO' 메시지를 보내(broadcast) 일관된 상태(consistent state)가 되도록 수정
- 초기 AOF가 쓰여지고 있다면 SHUTDOWN이 최소되도록 수정 - 버전 3.0.0-Beta 7에도 적용
- Jemalloc을 버전 3.6.0 으로 업데이트
- CLIENT LIST 속도 개선
- ROLE 명령 추가
- CLIENT KILL ID과 TYPE을 사용할 수 있도록 개선
- Hiredis 최신 버전으로 업데이트
Redis 2.8.11 - 2014년 6월 11일(수) HIGH 높음
- Lua 수치 정밀도 관련 버그 수정 -> Lua 사용자는 필수 업그레이드
- Blocking operation(BLPOP) 관련 버그 수정
- Cygwin 컴파일 수정
Redis 2.8.10 - 2014년 6월 5일(목) HIGH 높음
- min-slaves-to-write 버그 수정 » 관련 글
- DEL 때때로 만료된 키에 대해 1을 리턴하는 버그 수정
- PFCOUNT HLL 케시 관련 버그 수정
- Software watchdog 버그 수정
- Lua 스크립팅 엔진 속도 향상
- Lua -> Redis 수치 정밀도 수정
- Sentinel: 리더 센티널 노드로 부터 새 마스터 정보를 받는 +config-update-from 이벤트 추가
Redis 2.8.9 - 2014년 4월 22일(화) LOW 낮음
- 새 Data Structure HyperLogLog 도입 관련 3개 명령 추가 PFADD PFCOUNT PFMERGE
- Sorted Sets 새 명령 4개 추가 ZRANGEBYLEX ZLEXCOUNT ZREMRANGEBYLEX ZREVRANGEBYLEX
Redis 2.8.8 - 2014년 3월 25일(화) HIGH 높음
- 디스크가 꽉 찬 상황에서 SHUTDOWN 명령을 실행했을 때 데이터를 잃어버리는 버그 수정
- SORT 메모리 누수(leak) 버그 수정
- Sentinel: down-after-milliseconds 파라미터 값이 실행 중 수정되면 관련 센티널 인스턴스와 클론(슬레이브)에게 전파되도록 수정
- Install_server.sh 버그 수정
- Maxclients 파라미터 버그 수정
- Sentinel 이 기능은 Redis 3.0.0-Beta 3에도 적용
- Redis 인스턴스를 통하지 않고, Sentinel 인스턴스간 메시지를 보낼 수 있도록 수정
- 중요 상태 정보를 디스크에 저장하기 때문에 Crash-Recovery 상황에서도 안전하도록 수정
- CLIENT SETNAME을 사용해서 Redis 서버에 접속한 센티널 클라이언트 이름을 설정하도록 했다. 따라서 다른 클라이언트들이 CLIENT LIST 명령으로 센티널 클라이언트를 확인할 수 있다.
- 실패 감지(failure detection) 개선
- Redis 오브젝트 LRU 필드 24비트(22비트 대신)를 사용하도록 수정
- INFO 명령 속도 크게 향상
- DEBUG ERROR 추가
- Redis-cli: 업데이트된 linenoise lib로 다중 행 편집을 지원
Redis 2.8.7 - 2014년 3월 5일(수) LOW 낮음
- 이 버전에 포함된 모든 내용은 3월 11일 발표된 버전 3.0.0-Beta 2에도 적용되었습니다.
- Redis-cli
- SYNC, PSYNC를 호출하면 자동으로 슬레이브 모드(--slave mode)로 전환되도록 수정
- Redis-cli --bigkeys 구현에 RANDOMKEY 대신 SCAN을 사용하도록 수정했고 Pipelining 사용하도록 해서 훨신 빨라졌습니다.
- Redis-cli --intrinsic-latency mode 구현: kernel/hypervisor로 인한 시스템 대기 시간을 측정할 수 있다.
- Sentinel
- Sentinel event 추가: SENTINEL MONITOR/REMOVE +/-monitor, SENTINEL SET +set
- Sentinel: "IDONTKNOW" 에러 메시지 삭제
- BITCOUNT CPU 아키텍처 관련 개선
- BITPOS 명령 추가
- CONFIG REWRITE를 실행하면 로그를 남기도록 수정
- Config file Path 오류 수정, 이 버그는 redis.conf 파일안에 'dir' 파라미터가 있을 경우에 발생했습니다.
Redis 2.8.6 - 2014년 2월 13일(목) HIGH 높음
- 이 버전에 포함된 모든 내용은 3월 11일 발표된 버전 3.0.0-Beta 2에도 적용되었습니다.
- EVALSHA 스크립트 캐시 버그를 수정했습니다. 특정 조건에서 실행 된 스크립트가 AOF 나 클론(슬레이브)으로 올바르게 전파되지 않을 수 있었습니다. 자세한 내용은 이슈 #1549를 참조하세요.
- 복제(replication) 중 링크가 끊기는 버그 수정, 이 버그로 불필요한 재 동기화가 발생하거나 무한 루프가 발생할 수 있었습니다.
- AOF appendfsync 가 'everysec'나 'no'인 상태에서 AOF fsync 에러( 예, 디스크 공간이 없을 경우)가 발생해도 Redis 서버는 다운되지 않고 계속 실행되도록 수정했다. 단 데이터베이스는 write 명령을 수행할 수 없는 read-only 모드로 변경된다. 디스크 문제가 해결되어 다시 AOF fsync를 할 수 있으면 데이터베이스도 write 모드로 변경된다.
- MONITOR 모드에서 SLOWLOG 시간 계산 버그 수정
- Sentinel: SHUTDOWN 명령 도입
Redis 2.8.5 - 2014년 2월 4일(화) HIGH 높음
- Lua 스크립트가 실행중인 중간에 키가 만료되면 예상치 못한 동작이 발생할 수 있는 버그 수정
- MISCONFIG 에러: RDB 파일 쓰기를 중지할 수 없는 버그 수정 » MISCONF Redis is configured to save RDB snapshots » Redis Signals Handling
- REDIS_AOF_REWRITE_MIN_SIZE를 1MB(1024*1024)에서 64MB(64*1024*1024)로 변경하였다. 그래서 redis.conf의 auto-aof-rewrite-min-size 사이즈와 같아졌다.
- Rio.c rioFileWrite()에서 fflush() 실행 후 aof_fsync()를 실행하도록 수정
- SENTINEL MASTER 명령을 인수(argument) 없이 실행되었을 때 발생하는 문제 수정
- Sentinel: 실행 중에도 SENTINEL SET 명령으로 master quorum 을 변경할 수 있도록 수정
- Redis-cli --scan, --pattern 옵션 사용 시 SCAN을 사용하도록 수정
Redis 2.8.4 - 2014년 1월 13일(월) MODERATE 보통
- Makefile 개선
- SDIFF 수정
- AOF Rewrite 수정
- RESTORE TTL 32 bit overflow 수정
- Sentinel: SENTINEL SET 명령 추가 -> 실행 중에도 구성(configuration)을 수정할 수 있음.
- Sentinel: 마스터 또는 클론(슬레이브)와 연결이 끊기면 로그를 남기도록 수정
- 클론(슬레이브)가 마스터로 승격될 때 가능하면 마스터의 복제 오프셋(offset)을 상속받도록 수정 -> 이렇게 하면 장애조치(failover) 절차가 향상된다.
Redis 2.8.3 - 2013년 12월 11일(수) HIGH 높음
- Sentinel: 장애조치(failover) 도는 구성이 일치하지 않는 인스턴스를 재구성 할 때 시스템 안정성이 향상되도록 수정
- 클론(슬레이브)이 RDB 파일을 로드하는 동안 또는 old data를 제거하는 동안에도 마스터의 Ping에 응답할 수 있도록 수정 -> 마스터가 클론이 살아있음에도 다운되었다고 잘못 판단(timeout)하는 오류가 개선되었다.
- 32비트 인스턴스와 관련된 버그를 수정했고, 큰 데이터를 압축하여 2GB 이상되는 RDB 파일을 보낼 수 있도록 개선 -> Full sync 시 마스터는 RDB 파일을 클론에게 보낸다.
Redis 2.8.2 - 2013년 12월 2일(월) MODERATE 보통
- Sentinel: 센티널 노드들이 2개 파티션으로 나누어진 상황(split-brain)에서 리더 선출 절차가 진행되지 않도록 수정
- 마스터에서만 MISCONF 에러 시 쓰기 허용 중지 » MISCONF 에러 관련 자료
Redis 2.8.1 - 2013년 11월 25일(월) CRITICAL 필수
- "New Sentinel" 구성 전파 버그 수정 -> 센티널 사용자는 필수 업그레이드
Redis 2.8.0 - 2013년 11월 22일(금) LOW 낮음
- Sentinel: 안정적인 알고리즘으로 재 구현 -> 센티널 사용자는 업그레이드 권장
- SLAVEOF 명령 실행 시 새 마스터를 로그에 남기도록 수정
- Rdb.c rdbWriteRaw() 수정
Redis 2.8.0-RC6(2.7.106) - 2013년 11월 6일(수) LOW 낮음
Redis 2.8.0-RC5(2.7.105) - 2013년 10월 9일(수) HIGH 높음
- Redis-cli --bigkeys 관련 버그 수정
- Replication: 부분 동기화(PSYNC): 보다 안전하게 수정 » 부분 동기화 설명
- Replication: 마스터 timeout 감지 개선
Redis 2.8.0-RC4(2.7.104) - 2013년 8월 30일(금) HIGH 높음
- Lua: 심각한 EVAL 메모리 누수(leak) 버그 수정
- 인터페이스(interface) IPv6 주소가 없을 때 발생하는 버그 수정
- RDB 파일을 쓰기 위한 자식 프로세스를 생성(fork)할 수 없어서 BGSAVE가 실패할 때 MISCONFIG 오류 보내는 버그 수정
- 수 킬로바이트 이상되는 값의 메모리 효율이 크게 향상
- DEBUG SDSLEN 명령 추가
Redis 2.8.0-RC3(2.7.103) - 2013년 8월 19일(월) HIGH 높음
- 만료된 키 수집 알고리즘 개선
- 복제 속도 버그 수정 » 이슈 #1238
- 부분 동기화(PSYNC) 관련 버그 수정
- ZUNIONSTORE 결과가 잘못 나오는 버그 수정 » 이슈 #1240
- INFO KEYSPACE 섹션에 avg_ttl 정보 추가
- Redis-benchmark 개선
- Dict.c에서 잘못 사용된 API 수정
Redis 2.8.0-RC2(2.7.101) - 2013년 7월 30일(화) HIGH 높음
- 심각한 복제(replication) 버그 수정 자세한 내용은 이슈 #1221 참조하세요.
- Inline Protocol 구현: 텔넷에서 Redis 명령을 직접 입력할 수 있게 되었다. 예) "set key value"
Redis 2.8.0-RC1(2.7.101) - 2013년 7월 18일(목)
- 부분적 재동기화(Partially Resynchronization) 기능 추가: 마스터와 클론이 짧은 시간 동안만 연결이 끊어졌을 경우 RDB 파일을 받은 전체 동기화를 하지 않고 끊어진 시간 동안 추가된 데이터(명령)만 받는 부분적 동기화기능을 구현했다. 데이터 사이즈는 redis.conf에 추가된 repl-backlog-size 파라미터로 정한다.
- 키 변경에 대해서 Pub/Sub로 알림을 받을 수 있는 기능이 추가되었다. 자세한 내용은 Keyspace Notifications를 보세요. 기능 구현 요청 구현된 기능 설명
- 실험적인 IPv6 지원
- 마스터는 독립적으로 클론 시간초과(timeout)을 감지할 수 있는 기능을 추가했다.
- CONFIG SET으로 maxclients를 변경할 수 있게 되었다.
- 여러 IP 주소를 바인드할 수 있는 기능 추가
- 리눅스 ps 명령으로 포트와 자식 프로세스를 볼 수 있는 기능 추가
- 레디스 서버가 죽을 때(crash) 자동 메모로 체크 기능 추가
- CONFIG REWRITE 기능 추가: CONFIG SET 명령으로 변경된 설정을 redis.conf 파일에 저장한다.
- PUBSUB 명령 추가
- Lua 스크립트 오류 보고 기능 개선
- SDIFF 명령 성능 개선
2.6과 달라져서 주의해야 할 것들
- TTL, PTTL 명령에서 존재하지 않는 키는 -2, 만료시간이 설정되지 않는 키는 -1을 리턴합니다. 이전에는 모두 -1을 리턴했습니다.
- SORT 명령에서 STORE 옵션을 사용하지 않고 ALPHA 옵션을 사용하면 로컬 로케일(local collation locale)로 정렬(sort)됩니다.
- 오류 접두어가 -WRONGTYPE, -NOAUTH 같이 구체화되었습니다.
- Lua 스크립트 안에서 호출된 PUBLISH가 올바르게 클론에 전파됩니다.
- Logfile 표준 출력을 'logfile stdout' 대신 'logfile ""' (빈 문자열)을 사용하세요.
- INFO 명령 출력 형식이 field=value로 변경되었습니다.
- 레디스 서버 2.8을 버전 2.6의 클론으로 사용할 수는 있지만 이 경우 가능한 빨리 마스터와 클론 모두 2.8로 업그레드하길 권합니다.
Redis 2.6.x Release Notes
Redis 2.6.14 - 2013년 6월 20일(목) HIGH 높음
- Lua scripting + Replication + 클론 노드 AOF 자세한 내용은 이슈 #1164 참조하세요.
- AOF 재작성(rewrite) 시 키에 설정된 만료시간이 기록되지 않는 버그 수정
- 읽기 전용 클론(read-only slave)으로 로딩되는 AOF에서 호출되는 스크립트에서 쓰기 명령 허용
- Sentinel: 새 버전의 INFO replication 출력 파싱(parse) 오류 수정
Redis 2.6.13 - 2013년 4월 30일(화) MODERATE 보통
- BGSAVE 저장 에러가 발생했는데 계속 저장을 시도하는 버그 수정
- Sentinel: 다운되었던 마스터가 다시 시작되면 새 마스터의 클론(슬레이브)이 되도록 구현
- Redis-cli: 잘못된 명령행 스위치 에러 수정
- Redis-cli: --latency-history 모드 구현
- Lua 버전 5.1.5로 업데이트
- 메모리가 부족할 경우 좀더 명확한 메시지를 내보냅니다.
Redis 2.6.12 - 2013년 3월 30일(토) MODERATE 보통
- redis-cli --bigkeys 빈 DB에서 죽지(crash)되지 않도록 수정
- Stop-writes-on-bgsave-error 파라미터가 동작합니다.
- 레디스 서버 시작 시 RDB 파일이 있으나 오픈할 수 없는 경우 서버가 죽는 버그 수정
- master_link_down_since_seconds 초기값을 큰 값으로 변경
- AOF 또는 RDB 파일을 로딩하는 동안 SELECT 명령을 허용하도록 수정
- MULTI/EXEC 가 비어있거나 읽기 명령만 있는 경우 AOF에 저장되거나 클론으로 전달(복제)되지 않도록 수정
- 만료된(expired) 키가 다시 살아나는 버그 수정 자세한 내용은 이슈 #1026 참조하세요.
- SET 명령에 NX, XX, EX, PX 옵션을 추가했다.
Redis 2.6.11 - 2013년 3월 12일(화) LOW 낮음
- 유휴 상태(idle)일 때 CPU 사용량을 대폭 줄였습니다.
- 서버 내에서 serverCron()이 주기적으로 실행되는데 이 값을 HZ 파라미터화 했습니다.
- 복제(Replication): 마스터 PING 응답에 보다 엄격한 오류 검사
- Redis-cli/Redis client: 향상된 안정성을 위해 redis.conf에 tcp-keepalive 파라미터를 사용하세요.
- 데이터 파일(AOF/RDB)을 로드하는 동안 AUTH 명령을 사용할 수 있도록 수정했습니다.
- Config 파일에 짝이 맞지 않는 따옴표 때문에 서버가 죽는(segfault) 버그 수정
- Redis.conf에서 rename된 명령이 AOF나 클론으로 전달될 때 서버가 죽는(segfault) 버그 수정 RENAME 시 주의사항
Redis 2.6.10 - 2013년 2월 11일(월) MODERATE 보통
- Redis-cli --rdb 수정
- SLOWLOG에 EXEC는 기록하지 않도록 수정
- Shutdown 실패 시 반복적으로 재 시도하지 않도록 수정
- UNSUBSCRIBE PUNSUBSCRIBE: 항상 응답하도록 수정 이슈 #714 Commit
- Lua 구조체 라이브러리 업그레이드
- SRANDMEMBER count 옵션 버그 수정
- Sentinel: 마스터로 승격된 클론(슬레이브)를 너무 일지 공지하지 않도록 수정
- Redis-cli --bigkeys 출력을 쉽게 이해할 수 있도록 수정
- 클론(슬레이브) 소켓에 네이글 알고리즘(Nagle algorithm)을 사용하기위한 옵션을 추가했습니다.
- SO_KEEPALIVE를 사용하여 죽은 Peer를 감지할 수 있도록 수정(선택 사항)
Redis 2.6.9 - 2013년 1월 17일(목) MODERATE 보통
- SLAVEOF 명령으로 마스터를 변경 시 발생할 수 있는 버그 수정 자세한 내용은 이슈 #828 참조하세요.
- CLIENT SETNAME, GETNAME 추가, CLIENT LIST에 설정한 클라이언트 이름을 볼 수 있도록 수정, 디버그 시 유용하게 사용할 수 있습니다.
- Redis-cli --rdb <filename> 명령 추가: RDB 파일을 원격 서버에서 로칼 서버로 전송할 수 있습니다.
Redis 2.6.8 - 2013년 1월 11일(금) MODERATE 보통
- EVAL 관련 몇 가지 버그 수정 Issue #828 -> Slow EVAL command cause the link unusable
- Redis-cli, Redis-benchmark: mstime() overflow 버그 수정
- Linux/PPC64 Endianness(byte order) 관련 수정
- FD 이벤트 생성이 실패 할 때 더 나은 오류보고
Redis 2.6.7 - 2012년 12월 3일(화) MODERATE 보통
- BLPOP 명령으로 동일한 키를 여러번 반복 실행하면 죽는(crash) 버그 수정 Issue #801 -> Crash under high load (2.6.5 and 2.6.6) - handleClientsBlockedOnLists
Redis 2.6.6 - 2012년 11월 29일(목) CRITICAL 필수
Redis 2.6.5 - 2012년 11월 23일(금) MODERATE 보통
- MULTI/EXEC 오류 처리 동작 개선 Redis Transactions
- RDB/AOF 자식 프로세스가 Copy-on-Write로 사용한 메모리량을 로그에 기록하도록 수정했습니다.
- MIGRATE 버그 수정
- ZUNIONSTORE, ZINTERSTORE: 정수 오버플로우(integer overflow) 수정
- EVALSHA 대소문자를 구별하지 않도록 수정했습니다.
Redis 2.6.4 - 2012년 11월 9일(금) LOW 낮음
- BSD 라이센스 및 저작권 표시(BSD license and copyright notice)를 모든 *.h 파일에 추가했습니다.
Redis 2.6.3 - 2012년 11월 7일(수) LOW 낮음
- 리눅스 32비트 시스템 빌드 수정
- CLIENT LIST, MONITOR에서 유닉스 소켓(unix socket)을 제대로 표시
- Redis-cli 도움말 업데이트
- AOF 자식 프로세스 개선
Redis 2.6.2 - 2012년 10월 26일(금) LOW 낮음
- 이전 버전(2.6.1)에서 발생했던 RHEL5(Red Hat Enterprise Linux 5) 컴파일 문제 해결
- Linenoise Ctrl+w 지원 업데이트
Redis 2.6.1 - 2012년 10월 26일(금) LOW 낮음
- Linux < 2.6.17, glibc < 2.6 컴파일 문제 수정(RHEL5)
Redis 2.6.0 - 2012년 10월 23일(화) HIGH 높음
- 레디스 서버가 BUSY 상태일 때 AUTH 명령 허용하도록 수정하였습니다.
- MONITOR가 MULTI/EXEC를 관찰하도록 수정하였습니다.
- SCRIPT KILL은 다른 오류 접두어를 사용합니다.
- 32비트 아키텍처 메모리 제한이 3.5GB에서 3GB로 낮아졌습니다.
- Redis-check-dump: 2.6 RDB 파일과 호환
- INFO replication 셕선에 slave_read_only 정보 추가
Redis 2.6.0-RC8(2.5.14) - 2012년 10월 6일(화) LOW 낮음
- FreeBSD 컴파일
- SRANDMEMBER count 옵션 추가
- Lua 스크립트: 오류 및 상태 응답 개선
- SORT [ASC|DESC] 옵션 추가
- 시스템 클럭 왜곡(system clock skew) 개선
- Maxmemory 파라미터 값이 비정성적일 때 경고
- 보안 목적으로 murmurhash2 해시 함수 사용
- 설치 스크립트는 템플릿을 사용하지 않고 redis.conf를 사용합니다.
Redis 2.6.0-RC7(2.5.13) - 2012년 9월 17일(월) HIGH 높음
- ZIPLIST 버그 수정
- 메모리 부족(out of memory) 처리 기능 개선
- Lua: redis.call()을 인수없이 호출 시 죽는(crash) 버그 개선
- Lua: 32비트 시스템에서 많은 수의 Lua 호출 후 죽은(crash) 버그 수정
- 클론 PING 주기를 REDIS_HZ 100 (Time interrupt calls/sec, redis.h)정의에 따릅니다.
- BITCOUNT 버그 수정
- SELECT 인수가 정수가 아닌 경우 오류를 리턴하도록 수정하였습니다.
- Blocking operations(BLPOP, BRPOP, BRPOPLPUSH)이 재 구현되었습니다. Lua 스크립트에서 호출해도 클론/AOF에 올바르게 전달됩니다.
- 마스터가 연결을 허용했지만 실제로 회신 할 수 없는 경우 차단을 피하기 위해 복제를 시작하기 전에 비동기 PING을 보냅니다.
- Redis.conf에 Slave-priority 파라미터 추가: 이것은 클론 중 마스터로 승격할 우선순위를 지정합니다.
- Hiredis library 업데이트
Redis 2.6.0-RC6(2.5.12) - 2012년 8월 1일(수) MODERATE 보통
- AUTH 시간 공격 취약점 수정:
패스워드를 비교하는데 strcmp()를 사용하면 비교할 패스워드가 길면 시간이 많이 걸린다.
이를 이용해서 수 많은 Auth를 보내면 레디스 서버는 Auth를 처리하는데 많은 시간을 소모해서 다른 일을 할 수 없게 된다.
이것을 여기서는 시간 공격이라고 했다. 비교 시간이 패스워드 길이에 독립적인 time_independent_strcmp()를 새로 만들어서 사용했다.
자세한 내용은 이슈 #560 Timing Attack Vulnerability 참조하세요. - 파이프 모드(Pipe mode)를 활성화하기 전에 연결 확인
- REPLCONF 내부 명령 구현: INFO에 올바른 클론 포트를 표시할 수 있게 되었습니다.
- 알 수 없는 이유로 AOF에 완전한 명령을 기록하지 못하고 일부만 기록될 경우 해당 명령을 제거(truncate)합니다. AOF에 명령이 일부만 기록되면 레디스 서버를 재 시작할 때 에러가 발생합니다. 이를 확인하기 위해서는 redis-check-aof 유틸리티를 사용해야 합니다. 일부만 기록되는 명령을 제거할 경우 레디스 서버는 redis-check-aof 유틸리티를 사용하지 않고도 시작 할 수 있습니다.
- INFO aof_last_bgrewrite_status 정보 추가
- 다른 명령이 차단된 상태에서 Pub/Sub는 허용하도록 개선했습니다.
- epoll_wait() 버그 수정
Redis 2.6.0-RC5(2.5.11) - 2012년 6월 15일(금) HIGH 높음
- 이전 버전의 RDB 파일을 읽을 때 작은 정수(0~255)에서 발생하는 문제를 수정했습니다.
자세한 내용은 이슈 #547 "Crash in Redis 2.6 RC4 converting an hash value" 참조하세요. - Networking.c setDeferredMultiBulkLength() 출력값 수정
Redis 2.6.0-RC4(2.5.10) - 2012년 6월 7일(목) HIGH 높음
- "make install"에 PREFIX 허용
- Jemalloc을 3.0.0으로 업데이트: AOF rewrite 이슈 해결
자세한 내용은 이슈 #504 "slave crash -- Redis 2.4.8 crashed by signal: 11" 참조하세요. - ZINTERSTORE
ZUNIONSTORE에서 Set 키와 ZSet 키를 혼합했을 경우 버그 수정
자세한 내용은 이슈 #516 "zinterstore fails when mixing sets and sorted sets" 참조하세요. - RESTORE 버그 수정 자세한 내용은 이슈 #532 "MIGRATE fails for hashes" 참조하세요.
- AOF Rewrite 버퍼를 2GB 이상 처리하도록 수정했습니다. SDS int(2GB) 문자열 제한 관련
관련 이슈 #504를 참조하세요. - serverCron() 실행 주기값을 REDIS_HZ(redis.h)로 정의했습니다. 이것은 버전 2.6.11에서 redis.conf에 hz로 파라미터화 됩니다.
- 만료된 키 수집 알고리즘을 개선했습니다.
- BITOP, BITCOUNT 새 비트 관련 명령 추가
- Redis-cli --pipe: 대용량 임포트 기능 추가
Redis 2.6.0-RC3(2.5.9) - 2012년 5월 6일(일) CRITICAL 필수
- ZIPLIST 버그 수정
자세한 내용은 이슈 #500 "Compare integers in ziplist regardless of encoding" 참조하세요. - init.d 스크립트 몇 가지 버그 수정 관련 내용 Redis Quick Start
- Syncio.c 성능과 정확성 개선
- Slave-serve-stale-data가 yes이고 마스터와 연결이 끊긴 상태이면 -MASTERDOWN으로 응답합니다.
Redis 2.6.0-RC2(2.5.8) - 2012년 5월 2일(수) HIGH 높음
- 만료된 키가 있는 경우 KEYS 명령이 잘못된 결과를 내보내는 버그를 수정했습니다.
자세한 내용은 이슈 #487 "Show problem with 'keys' command with specific command sequence."를 보세요.
Redis 2.6.0-RC1(2.5.7) - 2012년 4월 27일(금) LOW 낮음
- 레디스 서버에서 Lua 스크립트를 사용할 수 있게 되었습니다. 자세한 내용은 "EVAL script" 참조하세요.
- 버전 2.4부터 사용되지 않았던 Virtual Memory를 제거했다.
- 하드 코딩된 max number of clients를 제거했다.
- 만료 시간을 밀리초 단위로 적용할 수 있는 PEXPIRE, PEXPIREAT, PTTL 명령 추가
- 작은 data structure(ZIP List)의 메모리 효율이 개선되었다. LISTS, ZSETS, HASHES data structure에 데이터가 적을 경우 ZIP List를 사용한다.
- Slave-read-only 파라미터 추가: 클론(슬레이브)를 읽기 전용으로 할지를 정한다.
- Client-output-buffer-limit 파라미터 추가: 이 설정 값에 도달하면 클라이언트와의 연결을 해제합니다. » 관련 내용
- 많은 수의 키가 동시에 만료될 때 좀 더 신속하게 반응하도록 키 수집 알고리즘을 개선했습니다.
- AOF 재작성 시 인수(값)을 여러개 사용할 수 있게 되었습니다. 이전 버전에서는 그렇지 않았습니다. 따라서 AOF 작성 시간, 로드 시간, 파일 사이즈가 작아졌습니다. » Testing the new Redis AOF rewrite
- Redis.conf의 모든 파라미터를 redis-server 시작 시 지정할 수 있게 되었습니다. 예) redis-server redis.conf --appendonly yes, 이렇게 지정하면 redis.conf 값보다 우선 적용합니다.
- 큰 객체(object)를 쓸 때 성능 향상
- 통합된 메모리 테스트: redis-server --test-memory
- INCRBYFLOAT, HINCRBYFLOAT 명령 추가
- DUMP, RESTORE, MIGRATE 새 명령 추가, 이 명령들은 Redis Cluster 개발하면서 만든것을 이 버전에 포함시켰습니다.
- RDB 파일 CRC64 checksum 사용
- MONITOR 개선: 이제 명령은 실행 전에 기록됩니다.
- "Software Watchdog" 기능 추가 » Watchdog 시작 » Latency 설명
- 레디스 서버 시작 시 Redis ASCII art logo를 보여줍니다.
- 메모리 Crash 리포트가 개선되어 버그 잡기가 쉬워졌습니다.
- Redis-benchmark: 명령 지정, CSV 형식, 도움말, 성능이 개선되었습니다.
- Redis-cli --eval <Lua script file> 기능 추가
- SHUTDOWN SAVE/NOSAVE 옵션 추가
- 명령 실행 시간 통계 추가: INFO commandstats로 볼 수 있습니다.
- SORT 기능 개선
- Big endian과 BSD system 지원 개선
- Build system 개선
2.4와 달라져서 주의해야 할 것들
- 2.4에서 만들어진 RDB, AOF 파일을 2.6에서 읽을 수 없습니다.
- 2.6 노드를 2.4의 클론(슬레이브)으로 삼을 수 있으나 그 반대로는 할 수 없습니다.
- 클론(슬레이브)은 이제 redis.conf 기본 설정이 읽기 전용(Read-Only) 입니다. slave-read-only yes
- SORT 숫자가 아니면 ALPHA 옵션을 사용해야 합니다.
- EXPIRE는 내부적으로 millisecond로 관리됩니다.
- INFO 출력을 섹션별로 나누었고 섹션을 지정해서 출력할 수 있게 수정했습니다.
다음은 이름이 바뀐 항목들입니다. - changes_since_last_save -> rdb_changes_since_last_save
- bgsave_in_progress -> rdb_bgsave_in_progress
- last_save_time -> rdb_last_save_time
- last_bgsave_status -> rdb_last_bgsave_status
- bgrewriteaof_in_progress -> aof_rewrite_in_progress
- bgrewriteaof_scheduled -> aof_rewrite_scheduled
- Redis.conf 파라미터 명 변경
- hash-max-zipmap-entries -> hash-max-ziplist-entries
- hash-max-zipmap-value -> hash-max-ziplist-value
- glueoutputbuf -> 제거
Redis 2.4.x Release Notes
Redis 2.4.18 - 2012년 11월 29일(목) CRITICAL 필수
- Jemalloc을 3.2.0로 업데이트했습니다. 같은 날 버전 2.6.6도 업데이트했습니다.
Redis 2.4.17 - 2012년 8월 31일(금) MODERATE 보통
- INFO run_id 정보 추가
- Redis.conf에 Slave-priority 파라미터 추가: 이것은 클론 중 마스터로 승격할 우선순위를 지정합니다.
- Double -> String function 개선
- ZIPLIST 버그 수정
Redis 2.4.16 - 2012년 8월 1일(수) MODERATE 보통
- INFO
명령은 올바른 포트 번호를 가진 클론(슬레이브)을 보여줍니다. 이를 위해 내부 명령인 REPLCONF를 도입(구현)했습니다.
» 관련 내용 -> "Exploring synchronous replication in Redis"
» 소스 -> "REPLCONF internal command introduced"
Redis 2.4.15 - 2012년 6월 21일(목) MODERATE 보통
- Jemalloc을 3.0.0으로 업데이트: AOF rewrite 이슈 해결, 버전 2.6.0-RC4에도 동일하게 업데이트
자세한 내용은 이슈 #504 "slave crash -- Redis 2.4.8 crashed by signal: 11" 참조하세요.
Redis 2.4.14 - 2012년 5월 23일(수) HIGH 높음
- 마스터 서버가 다운되었을 때 CPU를 과도하게 사용하는 버그 수정
자세한 내용은 이슈 #518 "redis 99% cpu when master down" 참조하세요. - ZUNIONSTORE에서 Set 키와 ZSet 키를 혼합했을 경우 버그 수정
자세한 내용은 이슈 #516 "zinterstore fails when mixing sets and sorted sets" 참조하세요. - Chkconfig를 사용할 때 install_server.sh의 버그 수정
- Redis-cli --test-memory 수정
- "make install"에 PREFIX 허용
- Redis-cli --pipe: 대용량 임포트 기능 추가 » 관련 내용: Redis Mass Insertion
- 많은 수의 키가 동시에 만료될 때 좀 더 신속하게 반응하도록 키 수집 알고리즘을 개선했습니다.
Redis 2.4.13 - 2012년 5월 2일(수) HIGH 높음
- 만료된 키가 있는 경우 KEYS 명령이 잘못된 결과를 내보내는 버그를 수정했습니다.
Redis 2.4.12 - 2012년 4월 30일(월) LOW 낮음
- SLOWLOG가 사용하는 메모리를 제한합니다.
- Redis-cli --test-memory 수정
Redis 2.4.11 - 2012년 4월 19일(목) MODERATE 보통
- Ae.c aeWait() 버그 수정
자세한 내용은 이슈 #267 "aeWait bug that may crash slave when fd exceeds 1024" 참조하세요. - SORT 만료된 키를 가져오는 GET/BY 옵션 버그 수정
자세한 내용은 이슈 #460 "redis 2.4.10 and 2.4.9 may crashed,but redis 2.4.6 looks up working normally" 참조하세요. - INFO master_link_down_since_seconds가 올바르게 초기화 됩니다.
- Redis-cli 기능 추가: --bigkeys (매우 큰 키의 경우 DB를 샘플링), --slave를 사용하여 슬레이브 인스턴스를 시뮬레이트합니다.
Redis 2.4.10 - 2012년 3월 30일(목) HIGH 높음
- 연쇄 복제(Chained Replication) 버그 수정
- 복제 사용 시 메모로 누수 버그 수정
- Redis-cli --test-memory 기능 개선
Redis 2.4.9 - 2012년 3월 19일(월) LOW 낮음
- Redis-benchmark Pipelining, DB 선택(select) 등 몇 가지 기능 추가
- Redis-cli --test-memory 기능 추가
- utils/install_server.sh 스크립트는 이제 Redhat/Centos에서 작동합니다.
- Redis-cli 버그 수정
자세한 내용은 이슈 #306 "redis-cli incorrect prompt string on socket connect" 참조하세요.
Redis 2.4.8 - 2012년 2월 22일(수) MODERATE 보통
- install_server.sh "cp -f"를 사용해서 "text file busy" 오류를 피하도록 수정
- redis-check-aof는 32 비트 시스템에서도 안전합니다.
- Maxmemory, 복제(replication) 버그 수정
자세한 내용은 이슈 #327 "maxmemory + evicting policy + slaves = death" 참조하세요. - HINCRBY overflow 감지
자세한 내용은 이슈 #330 "INCRBY / HINCRBY different overflow behavior" 참조하세요. - 버전 1.2.x에서 생성된 RDB 파일에 빈 ZSets 처리 문제 수정
Redis 2.4.7 - 2012년 2월 2일(목) LOW 낮음
- 이슈 #141 관련 테스트 수정
자세한 내용은 이슈 #141 "redis-server crash w/strack trace..." 참조하세요. - 클론(슬레이브) SYNC, RDB 로딩, 키 만료 관련 버그 수정
- Key misses/hits: Get 명령만 증가시키고 Set 명령은 증가시키지 않도록 수정
- Sds.c library는 1MB 이상을 할당하지 않도록 수정
- Maxmemory가 설정되지 않은 32 비트 인스턴스는 maxememory-policy가 noeviction으로 설정된 상태에서 3.5GB의 기본 제한을 갖습니다.
- 현재 클라이언트 및 명령 인수 포함하는 더 나은 Crash 보고서
Redis 2.4.6 - 2012년 1월 12일(목) LOW 낮음
- 이슈 #141 관련 버그 수정
- DEBUG LOADAOF가 AOF/클론에게 전파되지 않도록 수정
- INFO 클론의 ip/port/state 정보 표시
- INFO gcc 버전 표시
Redis 2.4.5 - 2011년 12월 23일(금) MODERATE 보통
- ZUNIONSTORE/ZINTERSTORE 스코어에 잘못된 값이 들어갈 수 있는 버그 수정
- SORT 버그 수정
자세한 내용은 이슈 #224 "A bug in SORT/STORE comand output" 참조하세요. - 마스터와 클론간 타임아웃 관련 버그 수정
Redis 2.4.4 - 2011년 11월 28일(월) MODERATE 보통
- Jemalloc을 버전 2.2.5로 업데이트: 이전 버전은 4MB 이상 메모리를 할당할 때 잠재적으로 심각한 문제가 있었습니다.
- CLIENT LIST에 클라이언트가 마지막 실행한 명령을 보여줍니다.
- Crash 리포트 개선
- loglevel >= verbose 일 때 프로토콜 에러 로그에 기록
- INFO에 AOF 관련 2개 정보 추가
Redis 2.4.3 - 2011년 11월 22일(화) MODERATE 보통
- Redis-cli: 작은 따옴표(single quotes)을 사용할 수 있도록 수정했습니다.
- CONFIG SET으로 패스워드 인증을 비활성화할 수 있게 수정했습니다.
- Redis.conf
- TIMEOUT 파라미터 기본값을 300에서 0(disable)으로 변경했습니다.
- 복제(replication) 관련 repl-ping-slave-period, repl-timeout 파라미터와 설명을 추가했습니다.
- I/O 버퍼 길이가 변경되어 성능이 개선되었습니다.
- SPARC 아키텍처에서 Crash 버그 개선
- CLIENT LIST 출력이 개선되었습니다.
- 최대 로그 메시지 길이를 4k로 설정하여 Crash 후 로그 파일에 기록 된 INFO 출력에서 잘리지 않도록 개선했습니다.
- 복제 관련 버그 수정: 쿼리 버퍼가 1GB에 도달하면 클라이언트 연결을 닫고,
쿼리 버퍼가 2GB (sds.c 문자열 오버플로)에 도달하면 문제가 되는 클라이언트 정보를 로그에 기록합니다.
자세한 내용은 이슈 #141 "redis-server crash w/strack trace..."를 참조하세요.
Redis 2.4.2 - 2011년 10월 26일(수) HIGH 높음
- BGSAVE가 진행되는 동안 BGREWRITEAOF 명령을 실행해도 AOF 재작성이 진행되지 않도록 수정했습니다. 이것을 허용할 경우 자식 프로세스가 여러 개 생겨 Disk I/O 과부하 등 여러가지 문제가 발생할 수 있습니다.
- SLAVEOF NO ONE: Crash 버그 수정
- Redis-cli 메모리 누수(leak) 버그 수정
- Debian/Ubuntu 레디스 전체 설치 스크립트가 /utils에 추가되었습니다.
- Redis.conf unixsocketperm 파라미터 관련 버그 수정
Redis 2.4.1 - 2011년 10월 17일(월) MODERATE 보통
- FLUSHALL: AOF에 기록되고 클론에 전달되도록 수정했습니다.
- FLUSHALL: SAVE가 설정되어 있으면 동기적(Sync)으로 RDB를 SAVE(저장)하고 flushall을 실행합니다. 데이터를 모두 날리는 실수를 예방(복구)할 수 있습니다.
Redis 2.4.0 - 2011년 10월 15일(토) MODERATE 보통
- OpenBSD 컴파일 문제가 수정되었습니다.
- RENAME하면 만료시간 정보가 보존되지 않는 버그 수정
자세한 내용은 이슈 #128 "TTL not preserved when key is renamed" 참조하세요. - INFO에 cpu_sys와 cpu_user가 잘못 표시되는 버그 수정
자세한 내용은 이슈 #131 "System/user CPU accounting in INFO is wrong" 참조하세요. - 종료(SHUTDOWN)시 유닉스 소켓 파일의 링크를 해제한다.
- 암호가 설정되어 있지 않으면 AUTH가 오류를 반환합니다.
- RDB 로딩 시 에러가 발생하면 치명적 오류로 종료합니다.
- Redis-check-dump : 이제 RDB 버전 2를 지원합니다.
- DEBUG RELOAD가 실패했을 때 더 많은 오류 보고를 내도록 수정했습니다.
- Redis.conf에 unixsocketperm 파라미터를 추가했습니다.
- CONFIG SET/GET 운영중 loglevel를 변경할 수 있습니다.
Redis 2.4.0-RC8(2.3.11) - 2011년 9월 21일(수) HIGH 높음
- AOF 내부에서 한 명령이 두 번 발생하는 버그 수정
- Mac/PPC에서 컴파일을 수정했습니다.
- SAVE 명령이 복제되지 않도록 수정했습니다.
- LRANGE: 긴 List의 마지막 부분을 조회할 때 성능을 크게 향상시켰습니다.
- Redis-cli --latency mode 구현
- AOF fsync(appendfsync)가 'everysec' 일 때 이제 별도 쓰레드에서 background로 실행합니다. 따라서 전체적인 성능이 향상되었습니다.
Redis 2.4.0-RC7(2.3.10) - 2011년 9월 12일(월) LOW 낮음
- 이슈 #593 관련 버그 수정
- Redis 서버가 극단적 인 상황에서 전체 응답을 클라이언트로 다시 보내지 못하게하는 네트워킹 계층(networking layer)의 문제가 해결되었습니다.
Redis 2.4.0-RC6(2.3.9) - 2011년 8월 9일(화) LOW 낮음
- 자동 AOF 재작성 시 4GB보다 큰 파일을 연속해서 다시 쓰는 버그를 수정했습니다.
- 새로운 Maxmemory 테스트를 도입했습니다.
Redis 2.4.0-RC5(2.3.8) - 2011년 7월 29일(금) MODERATE 보통
2.4의 새 기능
- ZSets에서 Data Set이 적을 경우 메모리를 적게 사용하는 새 Data Structure를 도입했습니다.
메모리를 얼마나 적게 사용하는지는 여기를 보세요 - Ziplists, Zipmaps, Intsets Data Structure 도입으로 메모리 절약과 RDB 저장/로드 속도가 빨라졌습니다.
- LPUSH, RPUSH, SADD, ZADD, SREM, ZREM, HDEL 명령에 값(value) 또는 멤버(member)를 여러 개 지정할 수 있게 개선했습니다.
- 단편화(fragmentation) 이슈를 피하기 위한 Jemalloc 지원
- INFO에 peak memory, fork time 등 몇 가지 정보 추가
- Redis-benchmark: 사용자가 제공하는 명령을 벤치마킹 할 수 있게 기능을 추가했습니다.
- 몇 가지 성능 개선과 버그 수정이 있었습니다.
Redis 2.2.x Release Notes
Redis 2.2.15 - 2011년 10월 17일(월) MODERATE 보통
- 이 버전에 적용된 기능들은 같은 날 발표된 Redis 2.4.1에도 동일하게 적용되었습니다.
- FLUSHALL: AOF에 기록되고 클론에 전달되도록 수정했습니다.
- FLUSHALL: SAVE가 설정되어 있으면 동기적(Sync)으로 RDB를 SAVE(저장)하고 flushall을 실행합니다. 데이터를 모두 날리는 실수를 예방(복구)할 수 있습니다.
Redis 2.2.14 - 2011년 9월 22일(목) MODERATE 보통
- 이 버전에 적용된 기능들은 전 날(9월 21일(수)) 발표된 Redis 2.4.0-RC8에도 적용되었습니다.
- AOF 내부에서 한 명령이 두 번 발생하는 버그 수정
- SAVE 명령이 복제되지 않도록 수정했습니다.
- LRANGE: 긴 List의 마지막 부분을 조회할 때 성능을 크게 향상시켰습니다.
- Redis-cli --latency mode 구현
Redis 2.2.13 - 2011년 9월 12일(월) LOW 낮음
- 이 버전에 적용된 기능들은 Redis 2.4.0-RC7에도 적용되었습니다.
- 이슈 #593 관련 버그 수정
- Redis 서버가 극단적 인 상황에서 전체 응답을 클라이언트로 다시 보내지 못하게하는 네트워킹 계층(networking layer)의 문제가 해결되었습니다.
Redis 2.2.12 - 2011년 7월 22일(금) HIGH 높음
- Slowlog 기능 도입: 명령의 실행시간을 기록해서 볼 수 있습니다. 이제 레디스 명령 모니터링이 가능해졌습니다.
- BLPOP같은 Blocking operation들이 AOF/복제(replication)와 관련되었을 때 발생하는 몇 가지 버그를 수정했습니다.
- AOF가 활성화되어 있을 때 EXPIRE, EXPIREAT 명령과 관련된 버그를 수정했습니다.
자세한 내용은 Google Group "Redis crash with 'appendonly yes' and message queue using lpush/brpop"를 보세요. - CONFIG SET appendonly no로 AOF를 중지했을 때 발생하는 문제 수정
- PrepareForShutdown() 수정
- 빠른 재시작을 위해 종료 시 수신 소켓(listening sockets)을 닫습니다.
Redis 2.2.11 - 2011년 6월 23일(목) LOW 낮음
- 매우 드문 경우지만 AOF 재작성 시 또는 RDB 파일에 같은 키가 두 번 이상 기록되는 버그를 수정했습니다.
Redis 2.2.10 - 2011년 6월 15일(수) MODERATE 보통
- SETNX 관련 버그 수정
자세한 내용은 Google Group "SETNX does not correctly force key expiry."를 보세요. - Redis-cli
- 이제 재 연결 처리(reconnection )가 개선되었습니다.
- 명령 앞에 접두사를 붙이면 지정한 횟수만큼 명령을 실행할 수 있습니다.
- 비 대화식 모드(non interactive mode)에서 -r을 사용할 때 명령 사이에 지연(delay)을 설정할 수 있습니다.
Redis 2.2.9 - 2011년 6월 10일(금) HIGH 높음
- 클론이 마스터와 동기화 후 AOF를 재작성하는데 잘못된 시간에 작성되어 데이터 불일치가 발생하는 버그를 수정했습니다.
- BRPOPLPUSH가있는 상태에서 LPUSH 복제가 잘못되는 버그를 수정했습니다.
- BRPOPLPUSH 메모리 누수(leak)가 수정되었습니다.
- Pub/Sub 버그로 인해 레디스 서버가 죽는(crash)되는 버그를 수정했습니다.
Redis 2.2.8 - 2011년 5월 24일(화) HIGH 높음
- Redis 2.2.7 버전에 소개된 dict.c(hash table implementation) 반복자(iterator)의 Copy-on-Wirte가 적게 수행되어 ZINTERSTORE, ZUNIONSTORE, SINTER, SINTERSTORE 명령이 잘못된 방식으로 동작하는 버그를 수정했습니다.
- DEBUG DIGEST 명령 실행중에 키가 만료(expire)되면 잘못된 결과를 만들어내는 버그를 수정했습니다.
Redis 2.2.7 - 2011년 5월 11일(수) LOW 낮음
- 다른 클라이언트가 BLPOP으로 블록(block)되었을 때 PUSH가 실행되면 경우에 따라 레디스 서버가 죽는(crash) 버그를 수정했습니다.
자세한 내용은 이슈 #543 "One of our Redis servers crashes frequently"를 보세요.
Redis 2.2.6 - 2011년 5월 5일(목) MODERATE 보통
- LIST: list-max-ziplist-entries 512가 아닌 경우 List 명령 실행 시 레디스 서버가 죽을(crash) 수 있는 버그를 수정했습니다.
자세한 내용은 이슈 #543 "One of our Redis servers crashes frequently"를 보세요. - SLAVEOF NO ONE 명령이 마스터와의 연결만 끊어야 하는데, 모든 클론과의 연결도 끊는 버그를 수정했습니다.
Redis 2.2.5 - 2011년 4월 22일(금) HIGH 높음
- SPOP 명령이 포함 된 AOF를 로드 할 때 레디스 서버가 죽는(crash) 버그를 수정했습니다.
Redis 2.2.4 - 2011년 4월 6일(수) LOW 낮음
- DEBUG OBJECT: ZSets는 SkipList를 리턴합니다.
Redis 2.2.3 - 2011년 4월 6일(수) HIGH 높음
- MONITOR + QUIT(또는 다른 조합) 명령으로 레디스 서버가 죽을(crash) 수 있는 버그를 수정했습니다.
자세한 내용은 이슈 #503 "Redis crash: networking.c:64 '!(c->flags & REDIS_CLOSE_AFTER_REPLY)' is not true"를 보세요. - OBJECT 명령 구현
- Redis-cli: 메모리 누수(leak) 버그와 "\x..."과 관련된 문제 수정
Redis 2.2.2 - 2011년 3월 5일(토) MODERATE 보통
- AOF 첫 번째 재작성 후 File Descriptor 관련 버그 수정
- GETRANGE/SUBSTR 키가 없거나 범위를 잘못 지정하면 빈 문자열(empty string)을 리턴하도록 수정했습니다.
Redis 2.2.1 - 2011년 2월 23일(수) LOW 낮음
- Redis 2.2.0과 같은 날 업데이트 되었습니다.
- MULTI/EXEC 블록에서 SPOP을 사용할 때 AOF/복제 관련 버그 수정
Redis 2.2.0 - 2011년 2월 23일(수) HIGH 높음
- SPOP 이제 AOF/복제에 올바르게 전파됩니다.
- CONFIG SET/GET Lists, Sets, ZSets 관련 파라미터 지원, 예) list-max-ziplist-entries
- Port 0을 지정하면 TCP socket을 수신(listen)하지 않는다고 알리도록 수정했습니다.
- 만료된 키 처리와 같이 퇴출(eviction)되는 키를 AOF/클론에 전파합니다.
Redis 2.2.0-RC4 - 2011년 1월 25일(수) MODERATE 보통
- 마스터가 BGSAVE로 시간이 많이 걸릴 때 복제 시간초과가 발생하는 에러를 수정했습니다.
- 마스터와 클론간 연결(link)을 확인하기위해 명시적인 PING이 도입되었습니다.
- FreeBSD 컴파일 수정
- Redis-benchmark 작은 이식성 문제를 해결했습니다.
Redis 2.2.0-RC3 - 2011년 1월 17일(월) LOW 낮음
- Redis-benchmark 수정과 개선
- INFO: 메모리 할당 세부 정보, 클라이언트에 할당된 최대 입출력 버퍼 정보가 추가되었습니다.
Redis 2.2.0-RC2 - 2010년 12월 20일(월) LOW 낮음
- 만료된 키와 분리된 퇴출(evicted)된 키 카운터(counter)가 추가되었습니다.
- INCR 계열 function들 Overflow 감지
Redis 2.2.0-RC1
- 자식 프로세스인 BGREWRITEAOF, BGSAVE 적은 양의 메모리를 사용하도록 지난 몇 주간 코드를 재작성했습니다.
2.2의 새 기능
- 데이터 타입이 List(ZipList)와 Set(IntSet)에서 값의 수가 적을 경우 그에 맞는 별도의 데이터 구조(Data Structure)를 제공해서
메모리를 획기적으로 절약했습니다.
자세한 내용은 ZIP List of LISTS, INTSET of SETS, ZIP List of ZSETS 을 보세요. - Redis-cli가 크게 향상되었습니다. 탭 완성(tab completion), 인라인 도움말(inline help), Raw output, 새로운 hiredis lib로 재작성되었습니다.
- 네트워킹 부분을 재작성해서 LRANGE 같은 명령은 적어도 10배 빨라졌습니다.
- 대부분의 조회 명령들은 Copy-on-Write에 영향을 주지 않도록 수정했습니다. 따라서 자식 프로세스가 AOF/RDB 저장 시 메모리를 적게 사용합니다.
- Sorted sets(ZSets)이 적은 메모리를 사용하도록 수정했습니다.
- 새 WATCH 명령
- 만료 시간이 설정된 키에 대해 쓰기 명령을 실행할 수 있습니다.
- Maxmemory 설정에 따른 키 퇴출 정책을 redis.conf 파라미터로 선택할 수 있게 되었습니다. 예) volatile-lru(default), allkeys-lru, 등
- Strings 새 명령: SETBIT, GETBIT, SETRANGE, GETRANGE, STRLEN
- Lists 새 명령: LINSERT, LPUSHX, RPUSHX, BRPOPLPUSH
- INFO: AOF/RDB 로딩 정보와 여러 가지 정보를 추가했습니다.
- Redis.conf 파일에서 rename-command로 명령의 이름을 바꾸거나 빈 문자열("")로 만들어서 사용할 수 없게 할 수 있습니다.
- Redis-benchmark: hiredis를 사용했고 더 빨라졌습니다.
- C library Hiredis 지원
- Redis.c 파일을 여러 개 파일로 나누었습니다.
- CPU 최적화 및 버그 수정
- Syslog 지원
- 유닉스 도메인 소켓 지원
Redis 2.0.x Release Notes
Redis 2.0.5 - 2011년 3월 5일(토) MODERATE 보통
- AOF 첫 번째 재작성 후 File Descriptor 관련 버그 수정 - 같은 날 업데이트한 버전 2.2.2에도 같이 적용
Redis 2.0.4 - 2010년 11월 6일(토) HIGH 높음
- HMGET 없는 키를 지정하면 죽는(crash) 버그를 수정했습니다.
- Save 파라미터를 지정하지 않으면 RDB 파일에 저장하지 않도록 수정했습니다.
Redis 2.0.3 - 2010년 10월 15일(금) HIGH 높음
- Maxmemory 제한으로 제거될 만료된 키가 있을 때 조차도 에러를 내는 경우가 있었습니다. 이제 만료된 키가 있으면 쓰기 명령은 항상 성공하도록 수정했습니다.
- AOF 로드시 BPOP 명령과 관련된 문제로 레디스 서버가 죽는(crash) 버그를 수정했습니다.
Redis 2.0.2 - 2010년 9월 22일(금) MODERATE 보통
- 자식 프로세스가 저장 중 Copy-on-Write로 인한 메모리 사용량을 줄이기 위해 노력하였고 저장 시간도 단축하였습니다.
- Maxmemory 한계에 도달했을 때 강제로 제거된 키를 계산하지 않는 버그를 수정했습니다. 이제 INFO에 올바르게 표시됩니다.
Redis 2.0.1 - 2010년 9월 9일(목) LOW 낮음
- 레디스 서버에 1만개 이상 클라이언트를 연결하는 것과 관련된 버그를 수정했습니다.
- Redis-cli는 -x 옵션을 사용하여 stdin에서 마지막 arg를 읽습니다. 이렇게 하면 cron 스크립트를 실행할 때 문제가 발생하지 않습니다.
- Init 스크립트(/utils/redis_init_script)를 제공합니다.
Redis 2.0.0 - 2010년 9월 3일(금) MODERATE 보통
- 몇 가지 버그를 수정했습니다.
Redis 2.0.0-RC4 - 2010년 7월 29일(목) MODERATE 보통
- ZINTERSTORE 실행 시 복제(replication) 관련된 버그를 수정했습니다.
Redis 2.0.0-RC3 - 2010년 7월 23일(금) LOW 낮음
- 몇 가지 버그를 수정했습니다.
Redis 2.0.0-RC2 - 2010년 7월 2일(금) LOW 낮음
- RDB/AOF 파일 로딩이 빨라졌습니다.
- ZINCR 버그 수정
Redis 2.0.0-RC1 - 2010년 5월 21일(금) LOW 낮음
2.0의 새 기능
- 19개 새 명령을 추가했고 많은 성능 개선과 버그를 수정했습니다.
- 레디스 트랜잭션(Redis transactions) MULTI/EXEC 개선, 새 DISCARD 명령 추가
- 스트링(Strings)에 새 APPEND, SETEX, SUBSTR(2.4에 GETRANGE로 변경) 명령 추가
- 리스트(Lists)에 새 BLPOP, BRPOP 명령 추가
- 소트 집합(Sorted Sets/ZSets)에 새 ZUNIONSTORE, ZINTERSTORE, ZRANK, ZREMRANGEBYRANK, ZREVRANK 명령 추가
- CONFIG SET/GET/RESETSTAT 명령 추가
- Pub/Sub: PUBLISH, SUBSCRIBE, PSUBSCRIBE, UNSUBSCRIBE, PUNSUBSCRIBE 명령 추가
- ZRANGEBYSCORE 새 WITHSCORES 옵션 추가
- RDB 파일 저장(saving)과 로딩(loading)이 빨라졌습니다.
- AOF: Append Only 파일 이름 설정 가능, Fsync 성능 향상, AOF 파일을 체크하고 수정하는 새 redis-check-aof 파일(기능) 추가
- Redis-cli 대화형 모드(Interactive mode), 따옴표 지원
- SKIP List에 많은 개선(improvements)을 했습니다.
- 공유 정수 도입: 0~9999까지의 정수는 공유해서 사용합니다. 따라서 추가로 메모리를 차지하지 않습니다.
- Hash table 크기 조정(resize) 시에도 명령을 처리하도록 개선했습니다. Non blocking
자세한 내용은 HASH Tables를 보세요. - LPUSH 명령의 리턴 값이 변경되었습니다. 예) 해당 키에 기존에 3개 값이 있었고 2개를 추가(push)했으면 5를 리턴합니다.
- Redis-server: 이슈 #191 -v or -version, 이슈 #194 -h or --help, 이슈 #193 "When redis-server can't open a config file, the path to the config file should be included in the error message" 반영
- Shutdown 용 SIGTERM 시그널 추가
- Redis.conf include 파라미터 지원
- Linenoise.c 추가
- 모든 명령은 binary safe를 지원합니다.
- 그 외에도 많은 수정/개선했습니다.
<< Release Notes 3 | Release Notes 2 | Release Notes 1 >> |
---|
조회수 :
Email
返事がかかってなれば、メールでお知らせします。