2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

Redis의 Expiration 및 Eviction 정책이란 무엇인가요?

_____
Q1: Redis에서 Expiration(만료)란 무엇인가요?
A1: Expiration은 Redis 키에 대해 설정된 TTL(Time To Live)로, 일정 시간이 지나면 해당 키가 자동으로 삭제되는 기능입니다. 이를 통해 Redis 데이터의 수명을 관리할 수 있습니다.

Q2: Expiration을 설정하는 방법은 무엇인가요?
A2: 명령어 `EXPIRE key seconds`, `PEXPIRE key milliseconds`, `EXPIREAT key timestamp`, `PEXPIREAT key millisecond-timestamp` 등을 사용하여 특정 키에 만료 시간을 설정할 수 있습니다.

Q3: Expiration이 적용된 키는 어떻게 동작하나요?
A3: 만료 시간이 도달하면 해당 키는 자동으로 삭제됩니다. Redis는 키를 조회할 때 만료 여부를 검사하며, 만료된 키는 조회 시 자동으로 제거됩니다.

Q4: Redis의 Eviction(축출) 정책이란 무엇인가요?
A4: Eviction 정책은 Redis 인스턴스의 메모리가 설정된 한도에 도달했을 때, 더 이상 데이터를 저장할 수 없을 때 어떤 키를 제거할지 결정하는 정책입니다. 이를 통해 메모리 부족 상황을 관리합니다.

Q5: Redis에서 지원하는 주요 Eviction 정책은 무엇인가요?
A5: 대표적인 정책은 다음과 같습니다.
- noeviction: 메모리 부족 시 쓰기 명령 실패
- allkeys-lru: 모든 키 중에서 LRU(최근 가장 적게 사용된) 방식으로 제거
- volatile-lru: 만료 시간이 설정된 키 중에서 LRU 방식으로 제거
- allkeys-random: 모든 키 중 무작위로 삭제
- volatile-random: 만료 시간 설정된 키 중 무작위 삭제
- volatile-ttl: 만료 시간이 가장 가까운 키부터 삭제

Q6: Eviction 정책은 어떻게 설정하나요?
A6: `redis.conf` 설정 파일에서 `maxmemory-policy` 옵션으로 설정하며, 실행 중에는 `CONFIG SET maxmemory-policy <정책명>` 명령으로 변경할 수 있습니다.

Q7: Expiration과 Eviction의 차이점은 무엇인가요?
A7: Expiration은 키별로 설정된 TTL에 따라 자동 삭제되는 시간 기반 만료이며, Eviction은 Redis 전체 메모리 제한 초과 시 적용되는 메모리 기반 자동 삭제 정책입니다.

Q8: 왜 Expiration과 Eviction이 중요한가요?
A8: Expiration은 오래된 데이터를 자동으로 정리해 메모리 효율을 높이고 데이터 신선도를 유지합니다. Eviction은 메모리 부족 상황에서 Redis 서비스를 정상적으로 유지하며 성능 저하를 막습니다.

Q9: 만료된 키가 즉시 삭제되지 않는 이유는?
A9: Redis는 성능을 위해 만료된 키를 즉시 일괄 삭제하지 않고, 접근 시 확인하거나 주기적으로 백그라운드에서 만료 키를 탐색하여 삭제합니다.

Q10: 메모리 한도와 Eviction 정책 같이 설정하는 방법은?
A10: `maxmemory` 옵션으로 최대 사용 메모리를 지정하고, `maxmemory-policy`로 적절한 축출 정책을 설정하면 메모리 관리가 가능합니다. 예를 들어, `maxmemory 2gb`와 `maxmemory-policy allkeys-lru`를 설정할 수 있습니다.

Redis의 Expiration 및 Eviction 정책Redis는 인메모리 데이터 구조 저장소로, 빠른 데이터 접근 속도와 다양한 데이터 구조를 지원하는 특징이 있습니다.

이러한 특성 덕분에 Redis는 캐싱, 세션 관리, 실시간 분석 등 다양한 용도로 사용됩니다.

그러나 메모리 기반의 데이터 저장소인 만큼, 메모리 관리가 중요합니다.

이때 Redis는 두 가지 주요 개념인 Expiration 과 Eviction 정책을 통해 메모리를 효율적으로 관리합니다.

1. Expiration (만료)Expiration은 Redis에서 특정 키가 일정 시간 후에 자동으로 삭제되도록 설정하는 기능입니다.

이를 통해 사용자는 데이터의 유효 기간을 정의할 수 있으며, 주로 캐시 데이터나 세션 데이터와 같은 일시적인 데이터를 관리하는 데 유용합니다.

- 설정 방법 : Redis에서는 `EXPIRE` 명령어를 사용하여 키의 만료 시간을 설정할 수 있습니다.

예를 들어, `EXPIRE mykey 300`은 `mykey`라는 키를 300초 후에 만료시키겠다는 의미입니다.

- TTL (Time To Live) : 만료 시간이 설정된 키는 TTL을 가지며, 이 TTL이 0이 되면 해당 키는 자동으로 삭제됩니다.

사용자는 `TTL` 명령어를 통해 현재 TTL 값을 확인할 수 있습니다.

- 만료 방식 : Redis는 두 가지 방식으로 만료된 키를 처리합니다.

- Lazy Expiration : 키에 접근할 때마다 만료 여부를 확인하여 만료된 키를 삭제합니다.

- Active Expiration : 주기적으로 만료된 키를 확인하여 삭제하는 방식입니다.



2. Eviction (추방)Eviction은 Redis의 메모리가 가득 찼을 때 새로운 데이터를 저장하기 위해 기존 데이터를 삭제하는 정책입니다.

Redis는 다양한 Eviction 정책을 제공하여 사용자가 필요에 맞게 선택할 수 있습니다.

- Eviction 정책 : - noeviction : 메모리가 가득 찼을 때 새로운 쓰기 작업이 실패합니다.

기본값입니다.

- allkeys-lru : 모든 키 중에서 가장 적게 사용된 키를 삭제합니다.

- volatile-lru : 만료 시간이 설정된 키 중에서 가장 적게 사용된 키를 삭제합니다.

- allkeys-random : 모든 키 중에서 랜덤으로 선택된 키를 삭제합니다.

- volatile-random : 만료 시간이 설정된 키 중에서 랜덤으로 선택된 키를 삭제합니다.

- volatile-ttl : 만료 시간이 설정된 키 중에서 TTL이 가장 짧은 키를 삭제합니다.

- 설정 방법 : Redis의 `maxmemory` 설정을 통해 사용할 수 있는 최대 메모리 용량을 설정하고, `maxmemory-policy`를 통해 Eviction 정책을 선택할 수 있습니다.

결론Redis의 Expiration과 Eviction 정책은 메모리 관리를 효율적으로 수행하는 데 중요한 역할을 합니다.

Expiration은 데이터의 유효 기간을 관리하여 불필요한 데이터를 자동으로 삭제하고, Eviction은 메모리가 가득 찼을 때 새로운 데이터를 저장할 수 있도록 기존 데이터를 삭제하는 방식으로 작동합니다.

이러한 기능들을 적절히 활용하면 Redis를 더욱 효과적으로 사용할 수 있습니다.

작성자: ㅁㅁ [비회원] | 작성일자: 1년 전 2024-08-25 09:52:15
조회수: 189 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.