Redis 4.0의 핵심 기능

(몇년 전의 글을 블로그에 올린 것임)
참고

redis 4.0은 지금까지와는 비교하면 아마 가장 극단적인 버전 업 중 하나이다.
향후 사용자에 의해 발견된 중대한 문제는 수주일에서 수개월로 패치 발표할 테니 신중하게 이용하자.

a modules system

redis는 이미 해시형과 SET형이나 List형 등 다양한 데이터 형이 있거나, Lua Script를 실행하는 등 기능 면에서 꽤 충실하고 있었지만, 그것이 한층 더 충실해진다.

much better replication(PSYNC2)

지금까지의 Redis에도 부분 동기(Partial-Sync)가 있었지만 여러가지 문제가 있었다.
구체적으로는 동일 master 이외에서 부분 동기를 못하다는 것으로, redis cluster 등을 이루면 master down의 새로운 slave가 승격할 때마다 Full-Sync가 발생한다.
대충 추정하면 Redis에 5GB의 데이터가 올라간 경우 NW가 1Gbps이라도 비관적으로 40초도 걸린다.
모처럼 Redis Cluster를 구성하고 있는데, 슬픈 다운 타임이다.
이것이 개선 되었다.

improvements to eviction policies

Redis는 메모리가 넘칠 때에 어떻게 행동할까? 라는 정책은 이미 몇몇 있지만 LFU(Least Frequently Used)를 쓰게 되었다.
지금까지는 LRU(Least Recently Used)로 불리는 최근 사용된 키일수록 삭제되기 어렵다는 것이었지만, LFU에서는 캐시 히트율이 높은 키일수록 삭제되기 어렵다는 것이다.
캐시 용도로 redis를 이용하고 있는 경우는 이쪽이 좋을수도 있다.

threaded DEL/FLUSH

지금까지는 예를 들면 크게 자라 버린 SET 타입 등의 키를 삭제하면 싱글 스레드로 실행되므로 삭제가 완료까지 모든 조작을 받지 않았다.
이것이 4.0이 되면 DEL 명령을 백그라운드로 하는 UNLINK 명령이 태어나서 키 삭제를 비동기로 할 수 있게 되었다.
또 FLUSHALL 나 FLUSHDB에도 async 옵션이 늘면서 같이 비동기로 삭제 할 수 있게 되었다.

mixed RDB+AOF format

Raspberry Pi support as primary platform

the new MEMORY command

메모리 사용량의 트러블 슈팅 명령이라고 한다.
단일 키에 의한 메모리 사용량 보고 일 듯.

Redis Cluster support for Nat/Docker

docker에서 Cluster를 짤 때, 많은 사람이 빠졌던 함정이 해소될 것 같다.

active memory defragmentation

액티브(온라인) 메모리 최적화 기능이 들어갔다.
아직 EXPERIMENTAL인 기능으로 디폴트로는 무효로 되어 있다.

memory usage and performance improvements

메모리의 사용법이나 퍼포먼스가 많이 좋아지고 있다고 한다.

much faster Redis Cluster key creation


이 글은 2019-05-01에 작성되었습니다.