Redis Release Notes

Redis Server 教育
Redis Developer Course
Redis 定期点検/技術支援
Redis Technical Support
Redis エンタープライズサーバ
Redis Enterprise Server

Redis Release Notes 6

Redis 6.2.1 - 2021년 3월 1일(월)        

    Upgrade urgency: LOW.

    Here is a comprehensive list of changes in this release compared to 6.2.0,
    each one includes the PR number that added it, so you can get more details

    다음은 RC3 6.2와 비교한 이번 릴리스의 포괄적인 변경 사항 목록입니다. 
    각 변경 사항에는 추가 된 PR 번호가 포함되어 있으므로<number>에서 자세한 내용을 확인할 수 있습니다.

    Bug fixes:
    * Fix sanitize-dump-payload for stream with deleted records (#8568)
      삭제된 레코드가 있는 스트림에 대한 sanitize-dump-payload 수정
    * Prevent client-query-buffer-limit config from being set to lower than 1mb (#8557)
      client-query-buffer-limit 구성이 1mb 미만으로 설정되지 않도록 방지.
    * Make port, tls-port and bind config options modifiable at runtime (#8510)
      포트, tls-port 및 bind 구성 옵션을 런타임에 수정 가능하게 만들기.

    Platform and deployment-related changes:
    * Fix compilation error on non-glibc systems if jemalloc is not used (#8533)
      jemalloc을 사용하지 않을 경우 glibc가 아닌 시스템에서 컴파일 오류 수정
    * Improved memory consumption and memory usage tracking on FreeBSD (#8545)
      FreeBSD에서 메모리 사용량 및 메모리 사용량 추적 개선
    * Fix compilation on ARM64 MacOS with jemalloc (#8458)
      jemalloc을 사용하여 ARM64 MacOS에서 컴파일 수정

    * New Module API for getting user name of a client (#8508)
      클라이언트의 사용자 이름을 얻기위한 새로운 모듈 API
    * Optimize RM_Call by utilizing a shared reusable client (#8516)
      재사용 가능한 공유 클라이언트를 활용하여 RM_Call 최적화
    * Fix crash running CLIENT INFO via RM_Call (#8560)
      RM_Call (# 8560)을 통해 CLIENT INFO를 실행할 때 충돌 문제 수정

Redis 6.2.0 - 2021년 2월 22일(월)        

    Upgrade urgency: SECURITY if you use 32bit build of redis (see bellow), MODERATE
    if you used earlier versions of Redis 6.2, LOW otherwise.

    Integer overflow on 32-bit systems (CVE-2021-21309):
    Redis 4.0 or newer uses a configurable limit for the maximum supported bulk
    input size. By default, it is 512MB which is a safe value for all platforms.
    If the limit is significantly increased, receiving a large request from a client
    may trigger several integer overflow scenarios, which would result with buffer
    overflow and heap corruption.

    32 비트 시스템에서 정수 오버 플로우 (CVE-2021-21309):
    Redis 4.0 이상에서는 지원되는 최대 대량 입력 크기에 대해 구성 가능한 제한을 사용합니다.
    기본적으로 모든 플랫폼에 안전한 값인 512MB입니다.
    제한이 크게 증가하면 클라이언트로부터 큰 요청을 받으면 여러 정수 오버플로 시나리오가 
    트리거되어 버퍼 오버플로 및 힙 손상이 발생할 수 있습니다.

    Here is a comprehensive list of changes in this release compared to 6.2 RC3,
    each one includes the PR number that added it, so you can get more details

    다음은 RC3 6.2와 비교한 이번 릴리스의 포괄적인 변경 사항 목록입니다. 
    각 변경 사항에는 추가 된 PR 번호가 포함되어 있으므로<number>에서 자세한 내용을 확인할 수 있습니다.

    Bug fixes:
    * Avoid 32-bit overflows when proto-max-bulk-len is set high (#8522)
      proto-max-bulk-len이 높게 설정된 경우 32 비트 오버플로 방지
    * Fix broken protocol in client tracking tracking-redir-broken message (#8456)
      클라이언트 추적 redir-broken 메시지에서 깨진 프로토콜 수정
    * Avoid unsafe field name characters in INFO commandstats, errorstats, modules (#8492)
      INFO commandstats, errorstats, modules에서 안전하지 않은 필드 이름 문자 사용 안함
    * XINFO able to access expired keys during CLIENT PAUSE WRITE (#8436)
      XINFO는 CLIENT PAUSE WRITE 중에 만료된 키에 액세스 할 수 있음
    * Fix allowed length for REPLCONF ip-address, needed due to Sentinel's support for hostnames (#8517)
      Sentinel의 호스트 이름 지원으로 인해 필요한 REPLCONF ip-address의 허용 길이 수정
    * Fix broken protocol in redis-benchmark when used with -a or --dbnum (#8486)
      -a 또는 --dbnum과 함께 사용할 때 redis-benchmark의 깨진 프로토콜 수정
    * XADD counts deleted records too when considering switching to a new listpack (#8390)
      XADD는 새 목록팩으로 전환을 고려할 때 삭제된 레코드도 계산합니다

    Bug fixes that are only applicable to previous releases of Redis 6.2:
    Redis 6.2의 이전 릴리스에만 적용되는 버그 수정:
    * Fixes in GEOSEARCH bybox (accuracy and mismatch between width and height) (#8445)
      GEOSEARCH bybox 수정 (정확도 및 너비와 높이의 불일치)
    * Fix risk of OOM panic in HRANDFIELD, ZRANDMEMBER commands with huge negative count (#8429)
      HRANDFIELD, ZRANDMEMBER 명령에서 엄청난 음수 카운트로 OOM 패닉 위험 수정
    * Fix duplicate replicas issue in Sentinel, needed due to hostname support (#8481)
      호스트 이름 지원으로 인해 필요한 Sentinel의 중복 복제본 문제 수정
    * Fix Sentinel configuration rewrite, an improvement of #8271 (#8480)
      Sentinel 구성 재작성 수정

    Command behavior changes: 
    명령 동작 변경:
    * SRANDMEMBER uses RESP3 array type instead of set type (#8504)
      SRANDMEMBER는 set type 대신 RESP3 array type을 사용합니다.
    * EXPIRE, EXPIREAT, SETEX, GETEX: Return error when provided expire time overflows (#8287)
      EXPIRE, EXPIREAT, SETEX, GETEX: 제공된 만료 시간 초과 시 반환 오류

    Other behavior changes:
    * Remove ACL subcommand validation if fully added command exists. (#8483)
      완전히 추가된 명령이 있는 경우 ACL 하위 명령 유효성 검사를 제거합니다.
    * Optimize sorting in GEORADIUS / GEOSEARCH with COUNT (#8326)
    * Optimize HRANDFIELD and ZRANDMEMBER case 4 when ziplist encoded (#8444)
      ziplist 인코딩시 HRANDFIELD 및 ZRANDMEMBER 사례 4 최적화
    * Optimize in-place replacement of elements in HSET, HINCRBY, LSET (#8493)
      HSET, HINCRBY, LSET에서 요소 내부 교체 최적화
    * Remove redundant list to store pubsub patterns (#8472)
      pubsub 패턴을 저장하기 위해 중복 목록 제거
    * Add --insecure option to command line tools (#8416)
      명령 줄 도구에 --insecure 옵션 추가

    Info fields and introspection changes: 
    정보 필드 및 내부 검사 변경:
    * Add INFO fields to track progress of BGSAVE, AOFRW, replication (#8414)
      BGSAVE, AOFRW, 복제 진행 상황을 추적하기 위해 INFO 필드 추가

    * RM_ZsetRem: Delete key if empty, the bug could leave empty zset keys (#8453)
    * RM_HashSet: Add COUNT_ALL flag and set errno (#8446)

Redis 6.2 RC3 - 2021년 2월 1일(월)

    Upgrade urgency LOW: This is the third Release Candidate of Redis 6.2.

    Here is a comprehensive list of changes in this release compared to 6.2 RC2,
    each one includes the PR number that added it, so you can get more details

    New commands / args:
    * Add HRANDFIELD and ZRANDMEMBER commands (#8297)
    * Add FAILOVER command (#8315)
      FAILOVER 명령 추가
    * Add GETEX, GETDEL commands (#8327)
      GETEX, GETDEL 명령 추가
    * Add PXAT/EXAT arguments to SET command (#8327)
      SET 명령에 PXAT/EXAT 인수 추가
    * Add SYNC arg to FLUSHALL and FLUSHDB, and ASYNC/SYNC arg to SCRIPT FLUSH (#8258)

    * Add hostname support to Sentinel (#8282)
      Sentinel에 호스트 이름 지원 추가.
    * Prevent file descriptors from leaking into Sentinel scripts (#8242)
      파일 설명자가 Sentinel 스크립트로 유출되는 것을 방지
    * Fix config file line order dependency and config rewrite sequence (#8271)
      구성 파일 라인 순서 종속성 및 구성 재작성 순서 수정

    New configuration options:
    * Add set-proc-title config option to disable changes to the process title (#3623)
      프로세스 제목 변경을 비활성화하는 set-proc-title 구성 옵션 추가
    * Add proc-title-template option to control what's shown in the process title (#8397)
      프로세스 제목에 표시되는 내용을 제어하는 proc-title-template 옵션 추가
    * Add lazyfree-lazy-user-flush config option to control FLUSHALL, FLUSHDB and SCRIPT FLUSH (#8258)
      FLUSHALL, FLUSHDB 및 SCRIPT FLUSH를 제어하는 lazyfree-lazy-user-flush 구성 옵션 추가

    Bug fixes:
    * AOF: recover from last write error by turning on/off appendonly config (#8030)
      AOF: 추가 전용 구성을 설정/해제하여 마지막 쓰기 오류에서 복구
    * Exit on fsync error when the AOF fsync policy is 'always' (#8347)
      AOF fsync 정책이 '항상'인 경우 fsync 오류시 종료
    * Avoid assertions (on older kernels) when testing arm64 CoW bug (#8405)
      arm64 CoW 버그를 테스트 할 때(이전 커널에서) 어설션 방지
    * CONFIG REWRITE should honor umask settings (#8371)
      CONFIG REWRITE는 umask 설정을 준수해야 함
    * Fix firstkey,lastkey,step in COMMAND command for some commands (#8367)
      일부 명령에 대한 COMMAND 명령의 firstkey, lastkey, step 수정

    Special considerations:
    * Fix misleading description of the save configuration directive (#8337)
      구성 저장 지시문에 대한 잘못된 설명 수정 -> save

    * A way to get RDB file via replication without excessive replication buffers (#8303)
      과도한 복제 버퍼없이 복제를 통해 RDB 파일을 가져오는 방법
    * Optimize performance of clusterGenNodesDescription for large clusters (#8182)
      대규모 클러스터를 위한 clusterGenNodesDescription의 성능 최적화

    Info fields and introspection changes:
    * SLOWLOG and LATENCY monitor include unblocking time of blocked commands (#7491)
      SLOWLOG 및 LATENCY 모니터에는 차단된 명령의 차단 해제 시간이 포함됩니다.

    * Add modules API for streams (#8288)
    * Add event for fork child birth and termination (#8289)
    * Add RM_BlockedClientMeasureTime* etc, to track background processing in commandstats (#7491)
    * Fix bug in v6.2, wrong value passed to the new unlink callback (#8381)
    * Fix bug in v6.2, modules blocked on keys unblock on commands like LPUSH (#8356)

Redis 6.2 RC2 - 2021년 1월 12일(화)

    Upgrade urgency LOW: This is the second Release Candidate of Redis 6.2.

    IMPORTANT: If you're running Redis on ARM64 or a big-endian system, upgrade may
    have significant implications. Please be sure to read the notes below.

    Here is a comprehensive list of changes in this release compared to 6.2 RC1,
    each one includes the PR number that added it, so you can get more details

    New commands / args:
    * Add the REV, BYLEX and BYSCORE arguments to ZRANGE, and the ZRANGESTORE command (#7844)
    * Add the XAUTOCLAIM command (#7973)
      XAUTOCLAIM 명령 추가
    * Add the MINID trimming strategy and the LIMIT argument to XADD and XTRIM (#8169)
      MINID 트리밍 전략과 LIMIT 인수를 XADD 및 XTRIM에 추가
    * Add the ANY argument to GEOSEARCH and GEORADIUS (#8259)
    * Add the CH, NX, XX arguments to GEOADD (#8227)
      GEOADD에 CH, NX, XX 인수 추가
    * Add the COUNT argument to LPOP and RPOP (#8179)
      LPOP 및 RPOP에 COUNT 인수 추가
    * Add the WRITE argument to CLIENT PAUSE for pausing write commands exclusively (#8170)
      쓰기 명령을 단독으로 일시 중지하기 위해 CLIENT PAUSE에 WRITE 인수를 추가합니다.
    * Change the proto-ver argument of HELLO to optional (#7377)
      HELLO의 proto-ver 인수를 선택 사항으로 변경
    * Add the CLIENT TRACKINGINFO subcommand (#7309)

    Command behavior changes:
    * CLIENT TRACKING yields an error when given overlapping BCAST prefixes (#8176)
      겹치는 BCAST 접두사를 지정하면 CLIENT TRACKING에서 오류가 발생함
    * SWAPDB invalidates WATCHed keys (#8239)
      SWAPDB가 WATCHed 키를 무효화 함
    * SORT command behaves differently when used on a writable replica (#8283)
      SORT 명령이 쓰기 가능한 복제본에서 사용될 때 다르게 작동함

    Other behavior changes:
    * Avoid propagating MULTI/EXEC for read-only transactions (#8216)
      읽기 전용 트랜잭션에 대해 MULTI/EXEC 전파 방지
    * Remove the read-only flag from TIME, ECHO, ROLE, LASTSAVE (#8216)
      TIME, ECHO, ROLE, LASTSAVE에서 읽기 전용 플래그 제거
    * Fix the command flags of PFDEBUG (#8222)
      PFDEBUG의 명령 플래그 수정
    * Tracking clients will no longer receive unnecessary key invalidation messages after FLUSHDB (#8039)
      추적 클라이언트는 더 이상 FLUSHDB 이후 불필요한 키 무효화 메시지를 받지 않습니다.
    * Sentinel: Fix missing updates to the config file after SENTINEL SET command (#8229)
      Sentinel: SENTINEL SET 명령 후 구성 파일의 누락된 업데이트 수정

    Bug fixes with compatibility implications (bugs introduced in Redis 6.0):
    호환성 관련 버그 수정 (Redis 6.0에 도입된 버그) :
    * Fix RDB CRC64 checksum on big-endian systems (#8270)
      빅 엔디안 시스템에서 RDB CRC64 체크섬 수정
      If you're using big-endian please consider the compatibility implications with
      RESTORE, replication and persistence.
      big-endian을 사용하는 경우 RESTORE, 복제 및 지속성과의 호환성 영향을 고려하십시오.
    * Fix wrong order of key/value in Lua's map response (#8266)
      Lua의 지도 응답에서 잘못된 키/값 순서 수정
      If your scripts use redis.setresp() or return a map (new in Redis 6.0), please
      consider the implications.
      스크립트가 redis.setresp()를 사용하거나 맵을 반환하는 경우 
      (Redis 6.0의 새로운 기능) 의미를 고려하십시오.  

    Bug fixes that are only applicable to previous releases of Redis 6.2:
    Redis 6.2의 이전 릴리스에만 적용되는 버그 수정:
    * Resolve rare assertions in active defragmentation while loading (#8284, #8281)
      로드하는 동안 활성 조각 모음에서 드문 어설션 해결

    Bug fixes:
    * Fix the selection of a random element from large hash tables (#8133)
      큰 해시 테이블에서 임의의 요소 선택 수정
    * Fix an issue where a forked process deletes the parent's pidfile (#8231)
      분기된 프로세스가 부모의 pidfile을 삭제하는 문제 수정
    * Fix crashes when enabling io-threads-do-reads (#8230)
      io-threads-do-reads 활성화 시 충돌 수정
    * Fix a crash in redis-cli after executing cluster backup (#8267)
      클러스터 백업 실행 후 redis-cli에서 충돌 수정
    * Fix redis-benchmark to use an IP address for the first cluster node (#8154)
      첫 번째 클러스터 노드에 IP 주소를 사용하도록 redis-benchmark 수정
    * Fix saving of strings larger than 2GB into RDB files (#8306)
      2GB보다 큰 문자열을 RDB 파일에 저장하는 문제 수정

    Additional improvements:
    * Improve replication handshake time (#8214)
      복제 핸드 셰이크 시간 개선
    * Release client tracking table memory asynchronously in cases where the DB is also freed asynchronously (#8039)
      DB도 비동기적으로 해제되는 경우 클라이언트 추적 테이블 메모리를 비동기적으로 해제
    * Avoid wasteful transient memory allocation in certain cases (#8286, #5954)
      특정 경우에 낭비되는 임시 메모리 할당을 피하십시오.
    * Handle binary string values by the 'requirepass' and 'masterauth' configs (#8200)
      'requirepass' 및 'masterauth' 구성으로 이진 문자열 값 처리

    Platform and deployment-related changes:
    플랫폼 및 배포 관련 변경:
    * Install redis-check-rdb and redis-check-aof as symlinks to redis-server (#5745)
      redis-server에 대한 심볼릭 링크로 redis-check-rdb 및 redis-check-aof 설치
    * Add a check for an ARM64 Linux kernel bug (#8224)
      ARM64 Linux 커널 버그 검사 추가
      Due to the potential severity of this issue, Redis will refuse to run on
      affected platforms by default.
      이 문제의 잠재적인 심각성으로 인해 Redis는 기본적으로 영향을 받는 플랫폼에서 
      실행을 거부합니다.

    Info fields and introspection changes:
    정보 필드 및 내부 검사 변경:
    * Add the errorstats section to the INFO command (#8217)
      INFO 명령에 errorstats 섹션 추가
    * Add the failed_calls and rejected_calls fields INFO's commandstats section (#8217)
      failed_calls 및 rejected_calls 필드 INFO의 commandstats 섹션 추가
    * Report child copy-on-write metrics continuously (#8264)
      자식 copy-on-write 측정 항목을 지속적으로 보고.

    Module API changes:
    * Add the RedisModule_SendChildCOWInfo API (#8264)
    * Add the may-replicate command flag (#8170)

Redis 6.2 RC1 - 2020년 12월 14일(월)

    Upgrade urgency LOW: This is the first Release Candidate of Redis 6.2.

    Introduction to the Redis 6.2 release

    This release is the first significant Redis release managed by the core team
    under the new project governance model.
    이 릴리스는 새로운 프로젝트 거버넌스 모델에 따라 핵심팀이 관리하는 
    첫 번째 중요한 Redis 릴리스입니다.

    Redis 6.2 includes many new commands and improvements, but no big features. It
    mainly makes Redis more complete and addresses issues that have been requested
    by many users frequently or for a long time.
    Redis 6.2에는 많은 새로운 명령과 개선 사항이 포함되어 있지만 큰 기능은 없습니다.
    주로 Redis를 더 완벽하게 만들고 많은 사용자가 자주 또는 오랫동안 요청한 문제를 

    Many of these changes were not eligible for 6.0.x for several reasons:
    이러한 변경 사항 중 대부분은 여러 가지 이유로 6.0.x에 적합하지 않습니다.

    1. They are not backward compatible, which is always the case with new or
       extended commands (that cannot be replicated to an older replica).
       이전 복제본으로 복제할 수 없는 새 명령이나 확장 명령의 경우 항상 
       그렇듯이 이전 버전과 호환되지 않습니다.
    2. They require a longer release-candidate test cycle.
       더 긴 릴리스 후보 테스트 주기가 필요합니다.

    Here is a comprehensive list of changes in this release compared to 6.0.9,
    each one includes the PR number that added it, so you can get more details

    New commands / args:
    * Add SMISMEMBER command that checks multiple members (#7615)
    * Add ZMSCORE command that returns an array of scores (#7593)
    * Add LMOVE and BLMOVE commands that pop and push arbitrarily (#6929)
    * Add RESET command that resets client connection state (#7982)
    * Add COPY command that copies keys (#7953)
    * Add ZDIFF and ZDIFFSTORE commands (#7961)
    * Add ZINTER and ZUNION commands (#7794)
    * Add GEOSEARCH/GEOSEARCHSTORE commands for bounding box spatial queries (#8094)
    * Add GET parameter to SET command, for more powerful GETSET (#7852)
    * Add exclusive range query to XPENDING (#8130)
    * Add exclusive range query to X[REV]RANGE (#8072)
    * Add GT and LT options to ZADD for conditional score updates (#7818)
    * Add CLIENT INFO and CLIENT LIST for specific ids (#8113)
    * Add IDLE argument to XPENDING command (#7972)
    * Add local address to CLIENT LIST, and a CLIENT KILL filter. (#7913)
    * Add NOMKSTREAM option to XADD command (#7910)
    * Add command introspection to Sentinel (#7940)
      Sentinel에 명령 내부 검사 추가
    * Add SENTINEL MYID subcommand (#7858)

    New features:
    * Dump payload sanitization: prevent corrupt payload causing crashes (#7807)
      덤프 페이로드 삭제: 충돌을 일으키는 손상된 페이로드 방지
      Has flags to enable full O(N) validation (disabled by default).
      전체 O(N) 유효성 검사를 활성화하는 플래그가 있습니다 (기본적으로 비활성화 됨).
    * ACL patterns for Pub/Sub channels (#7993)
      Pub/Sub 채널에 대한 ACL 패턴
    * Support ACL for Sentinel mode (#7888)
      Sentinel 모드용 ACL 지원
    * Support getting configuration from both stdin and file at the same time (#7893)
      stdin과 파일에서 동시에 구성 가져오기 지원
      Lets you avoid storing secrets on the disk.
      디스크에 비밀을 저장하지 않도록 합니다.

    New features in CLI tools:
    * redis-cli RESP3 push support (#7609)
      redis-cli RESP3 푸시 지원
    * redis-cli cluster import support source and target that require auth (#7994)
      인증이 필요한 redis-cli 클러스터 가져 오기 지원 소스 및 대상
    * redis-cli URIs able to provide user name in addition to password (#8048)
      비밀번호 외에 사용자 이름을 제공 할 수있는 redis-cli URI
    * redis-cli/redis-benchmark allow specifying the prefered ciphers/ciphersuites (#8005)
      redis-cli/redis-benchmark는 선호하는 암호/암호 모음을 지정할 수 있습니다
    * redis-cli add -e option to exit with code when command execution fails (#8136)
      redis-cli는 명령 실행이 실패할 때 코드와 함께 종료하는 -e 옵션을 추가합니다

    Command behavior changes:
    * EXISTS should not alter LRU (#8016)
      EXISTS는 LRU를 변경해서는 안 됨
      In Redis 5.0 and 6.0 it would have touched the LRU/LFU of the key.
      Redis 5.0 및 6.0에서는 키의 LRU/LFU를 건드렸을 것입니다.
    * OBJECT should not reveal logically expired keys (#8016)
      OBJECT는 논리적으로 만료된 키를 표시하지 않아야 함
      Will now behave the same TYPE or any other non-DEBUG command.
      이제 동일한 TYPE 또는 기타 비 DEBUG 명령으로 작동합니다.
    * Improve db id range check for SELECT and MOVE (#8085)
      SELECT 및 MOVE에 대한 db id 범위 검사 개선
      Changes the error message text on a wrong db index.
      잘못된 db 인덱스에서 오류 메시지 텍스트를 변경합니다.
    * Modify AUTH / HELLO error message (#7648)
      AUTH/HELLO 오류 메시지 수정
      Changes the error message text when the user isn't found or is disabled.
      사용자를 찾을 수 없거나 비활성화된 경우 오류 메시지 텍스트를 변경합니다.
    * BITOPS length limited to proto_max_bulk_len rather than 512MB (#8096)
      BITOPS 길이는 512MB가 아닌 proto_max_bulk_len으로 제한됨
      The limit is now configurable like in SETRANGE, and APPEND.
      제한은 이제 SETRANGE 및 APPEND와 같이 구성할 수 있습니다.
    * GEORADIUS[BYMEMBER] can fail with -OOM if Redis is over the memory limit (#8107)
      Redis가 메모리 제한을 초과하면 GEORADIUS [BYMEMBER]가 -OOM으로 실패할 수 있습니다

    Other behavior changes:
    * Optionally (default) fail to start if requested bind address is not available (#7936)
      선택적으로 (기본값) 요청된 바인드 주소를 사용할 수 없는 경우 시작 실패
      If you rely on Redis starting successfully even if one of the bind addresses
      is not available, you'll need to tune the new config.
      바인드 주소 중 하나를 사용할 수 없는 경우에도 Redis가 성공적으로 시작하는데 
      의존한다면 새 구성을 조정해야합니다.
    * Limit the main db dictionaries expansion to prevent key eviction (#7954)
      키 제거를 방지하기 위해 기본 db 사전 확장 제한
      In the past big dictionary rehashing could result in massive data eviction.
      Now this rehashing is delayed (up to a limit), which can result in performance
      loss due to hash collisions.
      과거에는 큰 사전 재해싱이 대규모 데이터 제거를 초래할 수 있었습니다.
      이제 이 재해싱이 지연되어(한도까지) 해시 충돌로 인해 성능이 저하될 수 있습니다.
    * CONFIG REWRITE is atomic and safer, but requires write access to the config file's folder (#7824, #8051)
      This change was already present in 6.0.9, but was missing from the release
      CONFIG REWRITE는 원자적이고 안전하지만 구성 파일의 폴더에 대한 쓰기 권한이 필요합니다.
      이 변경 사항은 이미 6.0.9에 있었지만 릴리스 정보에서는 누락되었습니다.
    * A new incremental eviction mechanism that reduces latency on eviction spikes (#7653)
      퇴거 급증 시 대기 시간을 줄이는 새로운 증분 퇴거 메커니즘
      In pathological cases this can cause memory to grow uncontrolled and may require
      specific tuning.
      병리학적인 경우 이로 인해 기억이 통제되지 않고 성장할 수 있으며 특정 조정이 필요할 수 있습니다.
    * Not resetting "save" config when Redis is started with command line arguments. (#7092)
      Redis가 명령줄 인수로 시작될 때 "save"구성을 재설정하지 않습니다.
      In case you provide command line arguments without "save" and count on it
      being disabled, Now the defaults "save" config will kick in.
      "save"없이 명령줄 인수를 제공하고 비활성화된 것으로 간주하는 경우 
      이제 기본값 "save"구성이 시작됩니다.
    * Update memory metrics for INFO during loading (#7690)
      로드 중 INFO에 대한 메모리 메트릭 업데이트
    * When "supervised" config is enabled, it takes precedence over "daemonize". (#8036)
      "감독된" 구성이 활성화되면 "daemonize"보다 우선합니다.
    * Assertion and panic, print crash log without generating SIGSEGV (#7585)
      어설션 및 패닉, SIGSEGV 생성없이 충돌 로그 인쇄
    * Added crash log report on SIGABRT, instead of silently exiting (#8004)
      자동 종료 대신 SIGABRT에 충돌 로그 보고서 추가
    * Disable THP (Transparent Huge Pages) if enabled (#7381)
      활성화된 경우 THP(Transparent Huge Pages) 비활성화
      If you deliberately enabled it, you'll need to config Redis to keep it.
      의도적으로 활성화했다면 Redis를 구성하여 유지해야 합니다.
    Bug fixes:
    * Handle output buffer limits for module blocked clients (#8141)
      모듈 차단 클라이언트에 대한 출력 버퍼 제한 처리
      Could result in a module sending reply to a blocked client to go beyond the
      모듈이 차단된 클라이언트에 응답을 전송하여 제한을 초과할 수 있습니다.
    * Fix setproctitle related crashes. (#8150, #8088)
      setproctitle 관련 크래시 수정.
      Caused various crashes on startup, mainly on Apple M1 chips or under
      주로 Apple M1 칩 또는 계측 중 시작 시 다양한 충돌이 발생했습니다.
    * A module doing RM_Call could cause replicas to get nested MULTI (#8097).
      RM_Call을 수행하는 모듈로 인해 복제본이 중첩된 MULTI를 얻을 수 있습니다.
    * Backup/restore cluster mode keys to slots map for repl-diskless-load=swapdb (#8108)
      repl-diskless-load = swapdb의 경우 클러스터 모드 키를 슬롯 맵에 백업/복원
      In cluster mode with repl-diskless-load, when loading failed, slot map
      wouldn't have been restored.
      repl-diskless-load가 있는 클러스터 모드에서 로드에 실패하면 슬롯 맵이 복원되지 않았습니다.
    * Fix oom-score-adj-values range, and bug when used in config file (#8046)
      oom-score-adj-values 범위 및 구성 파일에서 사용될 때 버그 수정
      Enabling setting this in the config file in a line after enabling it, would
      have been buggy.
      활성화한 후 구성 파일에서 한 줄로 설정을 활성화하면 버그가 발생했을 것입니다.
    * Reset average ttl when empty databases (#8106)
      데이터베이스가 비어있을 때 평균 ttl 재설정
      Just causing misleading metric in INFO
      INFO에서 오해의 소지가 있는 메트릭 발생
    * Disable rehash when Redis has child process (#8007)
      Redis에 자식 프로세스가 있는 경우 rehash 비활성화
      This could have caused excessive CoW during BGSAVE, replication or AOFRW.
      이로 인해 BGSAVE, 복제 또는 AOFRW 중에 과도한 CoW가 발생할 수 있습니다.
    * Further improved ACL algorithm for picking categories (#7966)
      카테고리 선택을 위한 더욱 개선된 ACL 알고리즘
      Output of ACL GETUSER is now more similar to the one provided by ACL SETUSER.
      ACL GETUSER의 출력은 이제 ACL SETUSER에서 제공하는 출력과 유사합니다.  
    * Fix bug with module GIL being released prematurely (#8061)
      모듈 GIL이 조기에 릴리스되는 버그 수정
      Could in theory (and rarely) cause multi-threaded modules to corrupt memory.
      이론상(드물게는) 다중 스레드 모듈이 메모리를 손상시킬 수 있습니다.  
    * Fix cluster redirect for module command with no firstkey. (#7539)
      firstkey없이 모듈 명령에 대한 클러스터 리디렉션 수정.
    * Reduce effect of client tracking causing feedback loop in key eviction (#8100)
      키 제거에서 피드백 루프를 유발하는 클라이언트 추적 효과 감소
    * Kill disk-based fork child when all replicas drop and 'save' is not enabled (#7819)
      모든 복제본이 삭제되고 '저장'이 활성화되지 않은 경우 디스크 기반 포크 자식을 죽임
    * Rewritten commands (modified for propagation) are logged as their original command (#8006)
      재 작성된 명령(전파를 위해 수정됨)은 원래 명령으로 기록됩니다.
    * Fix cluster access to unaligned memory (SIGBUS on old ARM) (#7958)
      정렬되지 않은 메모리에 대한 클러스터 액세스 수정(이전 ARM의 SIGBUS)
    * If diskless repl child is killed, make sure to reap the child pid (#7742)
      디스크가 없는 repl 자식이 죽으면 자식 pid를 거두어야 합니다.
    * Broadcast a PONG message when slot's migration is over, may reduce MOVED responses (#7571)
      슬롯 마이그레이션이 끝나면 PONG 메시지를 브로드 캐스트하면 MOVED 응답이 줄어들 수 있음

    Other improvements:
    * TLS Support in redis-benchmark (#7959)
      redis-benchmark에서 TLS 지원
    * Accelerate diskless master connections, and general re-connections (#6271)
      디스크없는 마스터 연결 및 일반 재 연결 가속화
    * Run active defrag while blocked / loading (#7726)
      차단/로드 중 활성 조각 모음 실행
    * Performance and memory reporting improvement - sds take control of its internal fragmentation (#7875)
      성능 및 메모리보고 개선 - sds가 내부 조각화를 제어 함
    * Speedup cluster failover. (#7948)
      클러스터 장애 조치 속도를 높입니다.

    Platform / toolchain support related improvements:
    플랫폼/툴체인 지원 관련 개선:
    * Optionally (not by default) use H/W Monotonic clock for faster time sampling (#7644)
      선택적으로(기본값이 아님) 더 빠른 시간 샘플링을 위해 H/W Monotonic 클럭 사용
    * Remove the requirements for C11 and _Atomic supporting compiler (#7707)
      C11 및 _Atomic 지원 컴파일러에 대한 요구 사항 제거
      This would allow to more easily build and use Redis on older systems and
      compilers again.
      이를 통해 이전 시스템과 컴파일러에서 Redis를보다 쉽게 빌드하고 사용할 수 있습니다.
    * Fix crash log registers output on ARM. (#8020)
      ARM에서 크래시 로그 레지스터 출력 수정.
    * Raspberry build fix. (#8095)
      라즈베리 빌드 수정.
    * Setting process title support for Haiku. (#8060)
      Haiku에 대한 설정 프로세스 제목 지원.
    * DragonFlyBSD RSS memory sampling support. (#8023)
      DragonFlyBSD RSS 메모리 샘플링 지원.

    New configuration options:
    * Enable configuring OpenSSL using the standard openssl.cnf (#8143)
      표준 openssl.cnf를 사용하여 OpenSSL 구성 활성화
    * oom-score-adj-values config can now take absolute values (besides relative ones) (#8046)
      oom-score-adj-values 구성은 이제 상대 값 외에 절댓값을 사용할 수 있습니다
    * TLS: Add different client cert support. (#8076)
      TLS: 다른 클라이언트 인증서 지원을 추가합니다.
    * Note that a few other changes listed above added their config options.
      위에 나열된 몇 가지 다른 변경 사항으로 구성 옵션이 추가되었습니다.

    Info fields and introspection changes:
    * Add INFO fields to track diskless and disk-based replication progress (#7981)
      INFO 필드를 추가하여 디스크 없는 및 디스크 기반 복제 진행률 추적
    * Add INFO field for main thread cpu time, and scrape system time. (#8132)
      메인 스레드 CPU 시간 및 스크랩 시스템 시간에 대한 정보 필드를 추가합니다.
    * Add total_forks to INFO STATS (#8155)
      INFO STATS에 total_forks 추가
    * Add maxclients and cluster_connections to INFO CLIENTS (#7979)
      INFO CLIENTS에 maxclients 및 cluster_connections 추가
    * Add tracking bcast flag and client redirection in client list (#7995)
      클라이언트 목록에 추적 bcast 플래그 및 클라이언트 리디렉션 추가
    * Fixed INFO client_recent_max_input_buffer includes argv array (#8065, see #7874)
      INFO client_recent_max_input_buffer에 argv 배열이 포함
    * Note that a few other changes listed above added their info fields.
      위에 나열된 몇 가지 다른 변경 사항으로 인해 정보 필드가 추가되었습니다.

    Module API changes:
    * Add CTX_FLAGS_DENY_BLOCKING as a unified the way to know if blocking is allowed (#8025)
    * Add data type callbacks for lazy free effort, and unlink (#7912)
    * Add data type callback for COPY command (#8112)
    * Add callbacks for defrag support. (#8149)
    * Add module event for repl-diskless-load swapdb (#8153)

    Module related fixes:
    * Moved RMAPI_FUNC_SUPPORTED so that it's usable (#8037)
    * Improve timer accuracy (#7987)
    * Allow '\0' inside of result of RM_CreateStringPrintf (#6260)

    Thanks to all the users and developers who made this release possible.
    We'll follow up with more RC releases, until the code looks production ready
    and we don't get reports of serious issues for a while.

    Migrating from 6.0 to 6.2

    Redis 6.2 is mostly a strict superset of 6.0, you should not have any problem
    upgrading your application from 6.0 to 6.2. However there are some small changes
    of behavior listed above, please make sure you are not badly affected by any of

    Redis 6.2는 대부분 6.0의 엄격한 상위 집합이므로 애플리케이션을 6.0에서 6.2로 업그레이드하는 데 
    문제가 없습니다. 그러나 위에 나열된 몇 가지 작은 동작 변경 사항이 있으므로 
    그 중 어느 것도 나쁜 영향을 받지 않는지 확인하십시오.

    Specifically these sections:
    * Command behavior changes
    * Other behavior changes

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 기준
    1. yum install yum-utils
    2. yum install scl-utils
    3. yum install centos-release-scl
    4. yum-config-manager --enable rhel-server-rhscl-7-rpms
    5. yum install devtoolset-8
    6. scl enable devtoolset-8 bash -> .bash_profile

  • ACL(Access Control List/접근 제어): 사용자(user) 관리   acl.c
  • 주기적(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
    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"
    * Cluster "SLOTS" subcommand memory optimization.
    * The LCS command is now a subcommand of STRALGO.
    * Meaningful offset for replicas as well. More successful partial
    * 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.
    * 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일(목)              

<< Introduction Release Notes 6 Release Notes 5 >>

조회수 :

Email 返事がかかってなれば、メールでお知らせします。