Redis Release Notes

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

Redis Release Notes 6

Redis 6.2.6 - 2021년 10월 4일(월)        

Upgrade urgency: SECURITY
보안 문제에 대한 수정 사항이 포함되어 있습니다.

보안 수정:
* (CVE-2021-41099) proto-max-bulk-len이 기본값이 아닌 매우 큰 값으로 수동 구성될 때 특정 문자열 명령 및 
  네트워크 페이로드를 처리하는 힙 버퍼 오버플로에 대한 정수 [yiyuaner 보고].
* (CVE-2021-32762) redis-cli 및 redis-sentinel 구문 분석에서 힙 버퍼 오버플로에 대한 정수 문제는 오래되고 
  덜 일반적인 플랫폼에서 대규모 다중 응답을 구문 분석합니다[Microsoft Vulnerability Research에서 보고함].
* (CVE-2021-32687) set-max-intset-entries가 기본값이 아닌 매우 큰 값으로 수동으로 구성될 때 intsets가 
  있는 힙 버퍼 오버플로에 대한 정수 [Pawel Wieczorkiewicz, AWS 보고].
* (CVE-2021-32675) 많은 연결에서 많은 수의 요소가 있는 RESP 요청 페이로드를 처리할 때 서비스 거부.
* (CVE-2021-32672) Lua Debugger의 임의 힙 읽기 문제[Meir Shpilraien 보고].
* (CVE-2021-32628) hash-max-ziplist-entries, hash-max-ziplist-value, zset-max-에 대해 기본값이 아닌 큰 값을 
  구성할 때 ziplist로 인코딩된 데이터 유형을 처리하는 힙 버퍼 오버플로에 대한 정수 ziplist-entries 또는 
  zset-max-ziplist-value [sundb에서 보고함].
* (CVE-2021-32627) proto-max-bulk-len 및 client-query-buffer-limit [sundb에서 보고함]에 대해 기본값이 아닌 
  큰 값을 구성할 때 스트림에서 정수-힙 버퍼 오버플로 문제가 발생합니다.
* (CVE-2021-32626) 특수 제작된 Lua 스크립트로 인해 힙 버퍼 오버플로가 발생할 수 있습니다
  [Meir Shpilraien 보고].
  
작동 변경과 관련된 버그 수정:
* 빈 소스 키가 있는 GEO* STORE는 대상 키를 삭제하고 0을 반환합니다. (#9271)
   이전에는 STORE가 아닌 변형과 같은 빈 배열을 반환했습니다.
* PUBSUB NUMPAT은 구독 수가 아닌 패턴 수로 응답합니다. (#9209)
   이것은 실제로 6.2.0에서 변경되었지만 릴리스 노트에서 간과되어 생략되었습니다.
   
Redis 6.2의 이전 릴리스에만 적용되는 버그 수정:
* CLIENT PAUSE 수정, 이전 PAUSE의 이전 시간 초과 사용. (#9477)
* 복제본의 CLIENT PAUSE가 복제 오프셋을 엉망으로 만드는 문제 수정. (#9448)
* INFO errorstats에 누락된 오류 통계 추가. (#9328)

기타 버그 수정:
* MIGRATE 명령에 대한 COMMAND 명령 키 위치의 잘못된 응답 수정. (#9455)
* MacOS 및 FreeBSD(kqueue)에서 응답 전에 항상 fsync를 보장하도록 appendfsync 수정. (#9416)
* 성능에 영향을 미치는 sync_file_range 시스템 호출의 잘못된 감지 수정. (#9371)

CLI tools:
* redis-cli가 ASK 응답을 받았을 때 처리하지 않았음. (#8930)

개선:
* 지연 만료를 통해 키 삭제 시 지연 모니터 샘플 추가. (#9317)
* 손상된 페이로드 개선. (#9321, #9399)
* RDB 파일을 로드하거나 RESTORE 명령을 처리할 때 빈 키 삭제. (#9297, #9349)

Redis 6.2.5 - 2021년 7월 21일(수)        

Upgrade urgency: SECURITY 
32비트 버전에서 인증된 클라이언트 연결에 영향을 주는 보안 문제에 대한 수정 사항이 포함되어 있습니다.

32비트 버전의 BITFIELD에서 정수 오버플로를 수정했습니다. (CVE-2021-32761)
Redis 버전 2.2 이상의 정수 오버플로 버그는 BITFIELD 명령을 사용하여 
힙을 손상시키고 잠재적으로 원격 코드 실행으로 이어질 수 있습니다.

작동 변경과 관련된 버그 수정:
* RESP3의 count가 있는 ZPOPMAX/MIN에 대한 응답 유형을 중첩 배열로 변경합니다. (#8981)
   ZRANGE와 같은 중첩 배열 대신 RESP2와 같은 평면 배열을 사용했습니다.
* 키가 없을 때 HRANDFIELD 및 ZRANDMEMBER에 대한 응답 유형 수정. (#9178)
   빈 배열 대신 null 배열을 사용하고 있었습니다.
* 소스 키가 없을 때 ZRANGESTORE에 대한 응답 유형 수정. (#9089)
   0 대신 ZRANGE와 같은 빈 배열을 사용했습니다(STORE 변형에서 사용됨).
   
Redis 6.2의 이전 릴리스에만 적용되는 버그 수정:
* 음수 COUNT가 있는 ZRANDMEMBER WITHSCORES는 bad score를 반환할 수 있습니다. (#9162)
* 스레드 I/O 구성이 활성화된 경우 CLIENT UNPAUSE 후 충돌 수정. (#9041)
* XTRIM 또는 XADD를 LIMIT로 수정하면 제한보다 많은 항목이 삭제될 수 있습니다. (#9048)
* OpenSSL 1.1.0의 빌드 문제 수정. (#9233)

기타 버그 수정: 
* watch 키가 만료된 경우 EXEC 명령 실패. (#9194)
* 구성원이 이미 존재할 때 대상 키(WATCH 및 추적)를 무효화하지 않도록 SMOVE 수정. (#9244)
* 잘못된 유형 오류가 발생했을 때 대상 키를 삭제하지 않도록 SINTERSTORE 수정. (#9032)
* GETBIT, SETBIT, BITCOUNT, BITPOS 및 BITFIELD에서 32비트 버전의 오버플로 수정. (#9191)
* 스트림 키의 메모리 사용량 개선. (#9164)
* 인바운드 클러스터 버스 연결에서 TCP 연결 유지 설정. (#9230)
* 모듈 AUX 데이터에 대한 RDB 짧은 읽기에서 복구하기 위해 디스크 없는 복제본 로드 수정. (#9199)
* 클라이언트 측 추적에서 경합 수정. (#9116)
* big-endian 플랫폼에서 ziplist 길이 업데이트 수정. (#2080)

CLI tools:
* redis-cli 클러스터 import 명령이 잘못된 MIGRATE 명령을 발행하여 REPLACE 대신 COPY를 보낼 수 있음. (#8945)
* redis-cli --rdb "-"를 사용하여 stdout에 쓸 때 수정. (#9136, #9135)
* CSV 및 RAW 출력에서 RESP3 세트 유형에 대한 redis-cli 지원. (#7338)

Modules:
* 현재 명령 이름을 가져오기 위한 모듈 API. (#8792)
* newlen이 0일 때 RM_StringTruncate 수정. (#3718)
* 시간 초과 콜백 없이 CLIENT UNBLOCK 충돌 모듈 수정. (#9167)

Redis 6.2.4 - 2021년 6월 1일(월)        

Upgrade urgency: SECURITY
아래 STRALGO 정수 오버플로가 문제된다면 업그레이드하세요.
그렇지 않다면 업그레이드 수준은 보통입니다.

STRALGO LCS에서 정수 오버플로 수정 (CVE-2021-32625)
Redis 버전 6.0 이상의 정수 오버플로 버그는 STRALGO LCS 명령을 사용하여 
악용되어 힙을 손상시키고 잠재적으로 원격 코드 실행으로 이어질 수 있습니다.
이것은 CVE-2021-29477에 의한 불완전한 수정의 결과입니다.
t_string.c stralgoLCS() 수정.

Redis 6.2의 이전 릴리스에만 적용되는 버그 수정
Bug fixes that are only applicable to previous releases of Redis 6.2:

* Fix crash after a diskless replication fork child is terminated (#8991)
  디스크없는 복제 포크 자식 종료 후 충돌(crash) 수정
  
* Fix redis-benchmark crash on unsupported configs (#8916)
  지원되지 않는 구성에서 redis-benchmark 충돌(crash) 수정

기타 버그 수정:

* STREAM: Fix crash in UNLINK on a stream key with deleted consumer groups (#8932)
  삭제된 소비자 그룹이 있는 스트림 키의 UNLINK 충돌 문제 해결
  
* SINTERSTORE: Add missing keyspace del event when none of the sources exist (#8949)
   소스 키가 존재하지 않는 경우 누락된 keyspace del 이벤트 추가
  
* Sentinel: Fix CONFIG SET of empty string sentinel-user/sentinel-pass configs (#8958)
   빈 문자열 sentinel-user/sentinel-pass 설정의 CONFIG SET 수정
   "SENTINEL CONFIG SET 명령을 사용하여 sentinel-user/pass를 빈 문자열로 설정하면 
   sentinel은 ""를 유효한 문자열로 간주하고 config 파일에 덤프하므로 동일한 서버를 다시 시작하면 
   오류가 발생합니다."
  
* Enforce client output buffer soft limit when no traffic (#8833)
  트래픽이 없을 때 클라이언트 출력 버퍼 소프트 제한 적용
  networking.c function 이름 변경:
  asyncCloseClientOnOutputBufferLimitReached() -> closeClientOnOutputBufferLimitReached()
  하였고 내용을 수정했습니다. 

개선(Improvements):

* Hide AUTH passwords in MIGRATE command from slowlog (#8859)
  MIGRATE 명령에서 AUTH/AUTH2를 사용했을 경우 password가 slowlog에 기록되지 않도록 수정.
  networking.c redactClientCommandArgument() function 추가
  cluster.c migrateCommand()에서 redactClientCommandArgument() 사용.

Redis 6.2.3 - 2021년 5월 3일(월)        

Upgrade urgency: SECURITY
아래 STRALGO 정수 오버플로가 문제된다면 업그레이드하세요.
그렇지 않다면 업그레이드 수준은 보통입니다.

STRALGO LCS에서 정수 오버플로 수정(CVE-2021-29477)
Redis 버전 6.0 이상의 정수 오버 플로우 버그는 STRALGO LCS 명령을 악용하여 힙을 손상시키고 
잠재적으로 원격 코드 실행을 초래할 수 있습니다.
정수 오버플로 버그는 6.0부터 이상 버전에 존재했습니다.
t_string.c stralgoLCS() 수정

아주 많은 개수의 정수로 구성된 SET에 대해서 COPY 명령을 실행할 때 정수 오버플로 발생(CVE-2021-29478):
Redis 6.2의 정수 오버플로 버그는 힙을 손상시키고 잠재적으로 원격 코드 실행할 수 있습니다.
이 취약점은 기본 set-max-intset-entries 구성 값 변경, 정수 값으로 구성된 대형 SET 키 생성과 
COPY 명령을 사용하여 복제하는 것과 관련이 있습니다.
정수 오버플로 버그는 2.6부터 존재하며 RDB 또는 DUMP 페이로드가 손상될 수도 있습니다.
intset.c intsetBlobLen() 수정

Redis 6.2의 이전 릴리스에만 적용되는 버그 수정

* Fix memory leak in moduleDefragGlobals (#8853)
  moduleDefragGlobals의 메모리 누수 수정
  
* Fix memory leak when doing lazy freeing client tracking table (#8822)
  지연 해제(lazy freeing) 클라이언트 추적 테이블 수행시 메모리 누수 수정
  
* Block abusive replicas from sending command that could assert and crash redis (#8868)
  악의적인 복제본이 redis를 어설션(assert)하고 충돌(crash)시킬 수 있는 명령을 보내지 못하도록 차단

기타 버그 수정 :

* Use a monotonic clock to check for Lua script timeout (#8812)
  단조로운(monotonic) 시계를 사용하여 Lua 스크립트 시간 초과 확인

* redis-cli: Do not use unix socket when we got redirected in cluster mode (#8870)
             클러스터 모드로 리디렉션되었을 때 유닉스 소켓을 사용하지 않도록 수정

모듈(Modules):
* Fix RM_GetClusterNodeInfo() to correctly populate master id (#8846)
  마스터 ID를 올바르게 채우도록 RM_GetClusterNodeInfo() 수정

Redis 6.2.2 - 2021년 4월 19일(월)        

버그 수정(Bug fixes):

* Fix BGSAVE, AOFRW, and replication slowdown due to child reporting CoW (#8645)
  BGSAVE, AOFRW(AOF Rewrite), 복제(replication) 시 CoW(Copy on Write) 사이즈 보고는
  비용이 많이 들고 자식 프로세스 처리 속도를 늦출 수 있습니다. 
  그래서 CoW 보고를 너주 자주하지 않고 적절한 때에 할 수 있도록 수정했습니다. 
  server.h에 "#define CHILD_COW_DUTY_CYCLE 100"를 추가했고,
  childinfo.c에 sendChildInfoGeneric(), updateChildInfo(), readChildInfo(), receiveChildInfo() 등을 
  수정했습니다. 
  
* Fix short busy loop when timer event is about to fire (#8764)
  타이머 이벤트에서 짧은 바쁜 루프를 수정했습니다. 
  100ms 타이머는 99ms 동안 휴면합니다. 
  ae.c aeProcessEvents()를 수정하고, msUntilEarliestTimer()를 usUntilEarliestTimer()로 이름을 변경했습니다.
  ae_epoll.c aeApiPoll()을 수정했습니다. 
  
* Fix default user, overwritten and reset users losing pubsub channel permissions (#8723)
  기본 사용자를 덮어쓰기 또는 재설정된 사용자가 pubsub 채널 권한을 잃는 버그를 수정했습니다.
  새로 생성된 사용자만 acl-pubsub-default가 적용되고 덮어 쓴(업데이트 된) 사용자는 
  재설정 resetchannels 거부되었습니다. 
  pubsub.c에서 pubsubCheckACLPermissionsOrReply()를 삭제했습니다.

* Fix config rewrite with an empty `save` config resulsing in default `save` values (#8719)
  config set save "" 후, config rewrite하면 변경 사항이 저장되지 않는 버그를 수정했습니다.
  config.c rewriteConfigSaveOption()를 수정했습니다.

* Fix not starting on alpine/libmusl without IPv6 (#8655)
  IPv6 없이 alpine/libmusl에서 시작되지 않는 문제를 수정했습니다.
  server.c listenToPort()에서 errno가 업데이트 되기 이전 값으로 로깅되도록 수정했습니다. 
  
* Fix issues with propagation and MULTI/EXEC in modules (#8617)
  Several issues around nested calls and thread safe contexts
  모듈의 전파 및 MULTI/EXEC 문제를 수정합니다.
  중첩된 호출 및 스레드 안전 컨텍스트와 관련된 몇 가지 문제입니다. 
  module.c의 여러 곳을 수정했습니다. 

* ACL Pub/Sub channels permission handling for save/load scenario (#8794)
  저장/로드 시나리오에 대한 ACL Pub/Sub 채널 권한 처리.

* Fix early rejection of PUBLISH inside MULTI-EXEC transaction (#8534)
  MULTI-EXEC 트랜잭션 내에서 PUBLISH의 조기 거부 부분을 수정했습니다.
  server.c processCommand()를 수정했습니다. 
  
* Fix missing SLOWLOG records for blocked commands (#8632)
  차단된 명령에 대해 누락된 SLOWLOG 레코드를 수정합니다.
  BLPOP같은 blocked 명령이 slowlog에 기록되도록 수정했습니다. 
  blocked.c를 수정했습니다. 
  
* Allow RESET command during busy scripts (#8629)
  사용중인 스크립트 중에 RESET 명령을 허용합니다.
  
* Fix some error replies were not counted on stats (#8659)
  일부 오류 응답이 통계에 포함되지 않는 문제를 수정했습니다.
  
* Add a timeout mechanism for replicas stuck in fullsync (#8762)
  전체 동기화에 멈춘 복제본에 대한 시간 초과 메커니즘을 추가합니다.
  이것은 디스크 없는 동기화와 관련 있습니다.   
  
* Process HELLO command even if the default user has no permissions (#8633)
  기본 사용자에게 권한이 없는 경우에도 HELLO 명령 처리합니다. 
  
* Client issuing a long running script and using a pipeline, got disconnected (#8715)
  장기 실행 스크립트를 실행하고 파이프 라인을 사용하는 클라이언트의 
  연결이 끊어지는 것을 수정했습니다. 
  networking.c processCommandAndResetClient()를 수정했습니다. 
  
* Fix script kill to work also on scripts that use `pcall` (#8661)
  pcall을 사용하는 스크립트에서도 작동하도록 스크립트 종료 수정
  
* Fix list-compress-depth may compress more node than required (#8311)
  list-compress-depth가 지정된 것보다 더 많은 노드를 압축할 수 있는 버그를 수정했읍니다.
  
* Fix redis-cli handling of rediss:// URL scheme (#8705)
  rediss:// URL 체계의 redis-cli 처리 수정
  
* Cluster: Skip unnecessary check which may prevent failure detection (#8585)
  클러스터: 실패 감지를 방지에서 불필요한 검사 건너 뛰기
  
* Cluster: Fix hang manual failover when replica just started (#8651)
  클러스터: 복제본이 막 시작되었을 때 중단되는 수동 장애 조치 수정
  
* Sentinel: Fix info-refresh time field before sentinel get first response (#8567)
  센티널: sentinel이 첫 번째 응답을 받기 전에 정보 새로 고침 시간 필드 수정
  
* Sentinel: Fix possible crash on failed connection attempt (#8627)
  센티널: 연결 시도 실패시 발생 가능한 크래시 수정
  
* Systemd: Send the readiness notification when a replica is ready to accept connections (#8409)
  Systemd: 복제본이 연결을 수락할 준비가 되면 준비 알림을 보냅니다.

  
명령 동작 변경(Command behavior changes):

* ZADD: fix wrong reply when INCR used with GT/LT which blocked the update (#8717)
    It was responding with the incremented value rather than nil
    업데이트를 차단한 GT/LT와 함께 INCR을 사용할 때 잘못된 응답 수정
     nil이 아닌 증가된 값으로 응답했습니다.
     
* XAUTOCLAIM: fix response to return the next available id as the cursor (#8725)
     Previous behavior was retuning the last one which was already scanned
     사용 가능한 다음 ID를 커서로 반환하도록 응답 수정
     이전 동작은 이미 스캔된 마지막 ID를 반환했습니다.
     
* XAUTOCLAIM: fix JUSTID to prevent incrementing delivery_count (#8724)
     delivery_count가 증가하지 않도록 JUSTID 수정


새 구성 옵션(New config options):

* Add cluster-allow-replica-migration config option (#5285)
  cluster-allow-replica-migration 구성 옵션 추가
  
* Add replica-announced config option (#8653)
  replica-announced 구성 옵션 추가
  
* Add support for plaintext clients in TLS cluster (#8587)
  TLS 클러스터에서 일반 텍스트 클라이언트에 대한 지원 추가
  
* Add support for reading encrypted keyfiles (#8644)
  암호화된 키 파일 읽기 지원 추가
  
개선(Improvements):

* Fix performance regression in BRPOP on Redis 6.0 (#8689)
  Redis 6.0에서 BRPOP의 성능 개선
  
* Avoid adding slowlog entries for config with sensitive data (#8584)
  민감한 데이터가 있는 구성에 대해 slowlog 항목을 추가하는 것을 피하도록 개선
  
* Improve redis-cli non-binary safe string handling (#8566)
  redis-cli 비 바이너리 안전 문자열 처리 개선
  
* Optimize CLUSTER SLOTS reply (#8541)
  CLUSTER SLOTS 응답 최적화
  
* Handle remaining fsync errors (#8419)
  fsync 오류 처리 개선
  
  
정보 필드 및 내부 검사 변경(Info fields and introspection changes):

* Strip % sign from current_fork_perc info field (#8628)
  current_fork_perc 정보 필드에서 % 기호 제거
  
* Fix RSS memory info on FreeBSD (#8620)
  FreeBSD에서 RSS 메모리 정보 수정
  
* Fix client_recent_max_input/output_buffer in 'INFO CLIENTS' when all clients drop (#8588)
  모든 클라이언트가 드롭 될 때 'INFO CLIENTS'에서 client_recent_max_input/output_buffer 수정
  
* Fix invalid master_link_down_since_seconds in info replication (#8785)
  정보 복제에서 잘못된 master_link_down_since_seconds 수정
  
플랫폼 및 배포 관련 변경(Platform and deployment-related changes):

* Fix FreeBSD <12.x builds (#8603)
  FreeBSD <12.x 빌드 수정

  
모듈(Modules):

* Add macros for RedisModule_log logging levels (#4246)
  RedisModule_log 로깅 수준에 매크로 추가
  
* Add RedisModule_GetAbsExpire / RedisModule_SetAbsExpire (#8564)
  RedisModule_GetAbsExpire/RedisModule_SetAbsExpire 추가
  
* Add a module type for key space notification (#8759)
  키 공간 알림을 위한 모듈 유형 추가
  
* Set module eviction context flag only in masters (#8631)
  마스터에서만 모듈 제거 컨텍스트 플래그 설정
  
* Fix unusable RedisModule_IsAOFClient API (#8596)
  사용할 수 없는 RedisModule_IsAOFClient API 수정
  
* Fix missing EXEC on modules propagation after failed EVAL execution (#8654)
  EVAL 실행 실패 후 모듈 전파시 누락된 EXEC 수정
  
* Fix edge-case when a module client is unblocked (#8618)
  모듈 클라이언트가 차단 해제된 경우 가장자리 케이스(edge-case) 수정
  

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
    at https://github.com/redis/redis/pull/<number>

    다음은 RC3 6.2와 비교한 이번 릴리스의 포괄적인 변경 사항 목록입니다. 
    각 변경 사항에는 추가 된 PR 번호가 포함되어 있으므로 
    https://github.com/redis/redis/pull/<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 미만으로 설정되지 않도록 방지.
      
    Improvements:
    * 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에서 컴파일 수정

    Modules:
    * 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
    at https://github.com/redis/redis/pull/<number>

    다음은 RC3 6.2와 비교한 이번 릴리스의 포괄적인 변경 사항 목록입니다. 
    각 변경 사항에는 추가 된 PR 번호가 포함되어 있으므로 
    https://github.com/redis/redis/pull/<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 하위 명령 유효성 검사를 제거합니다.
      
    Improvements:
    * Optimize sorting in GEORADIUS / GEOSEARCH with COUNT (#8326)
      COUNT로 GEORADIUS/GEOSEARCH에서 정렬 최적화
    * 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 필드 추가

    Modules:
    * 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
    at https://github.com/redis/redis/pull/<number>

    New commands / args:
    * Add HRANDFIELD and ZRANDMEMBER commands (#8297)
      HRANDFIELD 및 ZRANDMEMBER 명령 추가
    * 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)
      FLUSHALL 및 FLUSHDB에 SYNC 인수를 추가하고 SCRIPT FLUSH에 ASYNC/SYNC 인수를 추가합니다.

    Sentinel:
    * 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

    Improvements:
    * 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 모니터에는 차단된 명령의 차단 해제 시간이 포함됩니다.

    Modules:
    * 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
    at https://github.com/redis/redis/pull/<number>

    New commands / args:
    * Add the REV, BYLEX and BYSCORE arguments to ZRANGE, and the ZRANGESTORE command (#7844)
      ZRANGE 및 ZRANGESTORE 명령에 REV, BYLEX 및 BYSCORE 인수 추가
    * 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)
      GEOSEARCH 및 GEORADIUS에 ANY 인수 추가
    * 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)
      CLIENT TRACKINGINFO 하위 명령 추가

    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
    at https://github.com/redis/redis/pull/<number>

    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
      notes.
      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
      limit.
      모듈이 차단된 클라이언트에 응답을 전송하여 제한을 초과할 수 있습니다.
    * Fix setproctitle related crashes. (#8150, #8088)
      setproctitle 관련 크래시 수정.
      Caused various crashes on startup, mainly on Apple M1 chips or under
      instrumentation.
      주로 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 지원 컴파일러에 대한 요구 사항 제거.
      Redis 6.0부터 _Atomic으로 인해서 gcc 8.3 이상 버전이 필요했는데
      gcc 4.8 버전으로도 컴파일할 수 있도록 수정되었다. 
      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
    them.

    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 redis.io.
    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"
      primitive!
    * Cluster "SLOTS" subcommand memory optimization.
    * The LCS command is now a subcommand of STRALGO.
    * Meaningful offset for replicas as well. More successful partial
      resynchronizations.
    * 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.
    * CLIENT KILL USER .
    * 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일(목)              


<< Release Notes 7 Release Notes 6 Release Notes 5 >>

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