Redis는 In-Memory Database 입니다.

Memory는 가격이 비싸고, 한 Node당 가질 수 있는 용량이 Disk에 비해서 한계가 있으므로 용량의 관리가 중요합니다.

Memory에 저장된 데이터는 컴퓨터가 종료되면 사라지므로(volatile), 정상/비정상 종료가 되더라도 데이터가 유지되도록 하는 방법을 고민할 뿐만 아니라 비정상 종료가 되지 않도록 Node를 관리하는 것이 중요합니다.

Key Eviction

Memory를 관리하는 가장 기초적인 방법은 maxmemory를 넘지 않도록 하는 것입니다.

maxmemory에 다다르면 새로운 데이터 저장을 위해서 존재하는 Key를 제거해야합니다. 레디스는 이 상황에서 새로운 데이터 저장을 위해 존재하는 키를 제거하는 방식을 사용합니다.

Key Eviction은 이것을 어떤 규칙으로 할 것인지에 대한 설정입니다.

maxmemory 설정

redis.conf 파일에 maxmemory 키로 max memory를 설정합니다.

Redis가 관리하는 memory는 추정치입니다. 정확하게 추적해서 관리하지 못합니다.

그래서 maxmemory는 해당 노드에 Redis가 가용한 총 memory보다 조금 적게 주어야 오차가 있더라도 관리가 됩니다.

Eviction이 동작하는 과정