최대 메모리 사용량 제한
replication이나 persistence를 활용할시 Redis는 복제본이나 AOF 파일에 기록될 업데이트 집합을 저장하기 위해 일부 RAM을 버퍼로 사용합니다. 그렇기 때문에 메모리 제한을 할 때 어느정도의 램 용량을 비워두는 편이 좋습니다.
- CLI
CONFIG SET maxmemory 100mb
- redis.conf : 예시 (opens in a new tab)
maxmemory 100mb
레디스 메모리 교체정책
- noeviction: 키가 제거되지 않으며, 새로운 데이터를 캐시하려는 명령을 실행할 때 서버가 오류를 반환합니다. 데이터베이스가 복제를 사용하는 경우 이 조건은 기본 데이터베이스에만 적용됩니다. 단, 기존 데이터를 읽기만 하는 명령은 정상적으로 작동합니다.
- 금융 거래 데이터와 같이 데이터 손실이 절대 발생해서는 안 되는 경우
- allkeys-lru: 가장 오랫동안 사용되지 않은(LRU) 키를 제거합니다.
- 소셜 미디어 피드 캐싱: 최근에 조회된 게시물은 유지하고 오래된 게시물은 제거
- 제품 카탈로그: 자주 조회되는 제품 정보는 캐시에 유지
- 세션 관리: 활성 사용자의 세션은 유지하고 비활성 세션은 제거
- allkeys-lfu: 가장 적게 사용된(LFU) 키를 제거합니다.
- CDN 캐싱: 인기 있는 콘텐츠는 캐시에 유지
- 검색 자동완성: 자주 검색되는 키워드는 캐시에 유지
- 게임 리더보드: 자주 조회되는 상위 랭킹 데이터 유지
- allkeys-random: 키를 무작위로 제거합니다.
- 모든 데이터의 중요도가 비슷한 경우
- volatile-lru: 만료 필드가 true로 설정된 키 중에서 가장 오랫동안 사용되지 않은 키를 제거합니다.
- 사용자 세션 데이터: 만료 시간이 있는 세션 중 최근에 사용되지 않은 세션 제거
- 임시 토큰 저장소: 만료 예정인 토큰 중 사용되지 않는 것 우선 제거
- 캐시된 API 응답: TTL이 설정된 응답 중 최근 사용되지 않은 것 제거
- volatile-lfu: 만료 필드가 true로 설정된 키 중에서 가장 적게 사용된 키를 제거합니다.
- 임시 파일 캐시: 만료 시간이 있는 파일 중 사용 빈도가 낮은 것 제거
- 웹 세션 스토리지: 만료 예정인 세션 중 접근 빈도가 낮은 것 제거
- API 응답 캐시: TTL이 있는 응답 중 조회 빈도가 낮은 것 제거
- volatile-random: 만료 필드가 true로 설정된 키 중에서 무작위로 키를 제거합니다.
- ttl이 설정된 데이터의 중요도가 비슷한 경우
- volatile-ttl: 만료 필드가 true로 설정된 키 중에서 남은 수명이 가장 짧은 키를 제거합니다.
- OTP(일회용 비밀번호): 곧 만료될 코드 우선 제거
- 임시 URL: 만료 시간이 임박한 URL 우선 제거
- 캐시된 외부 API 응답: 만료가 가까운 데이터 우선 제거
volatile-xxx 정책은 expire 필드가 true로 설정된 키가 없거나, volatile-ttl의 경우, 만료 시간 값이 설정된 키가 없으면 noeviction처럼 동작합니다.
INFO 명령어
INFO 명령은 캐시 성능을 확인하는 데 유용한 여러 데이터를 제공합니다. 특히, INFO stats 섹션에는 두 가지 중요한 항목이 포함되어 있습니다. keyspace_hits(캐시에서 키가 성공적으로 발견된 횟수)와 keyspace_misses(키가 요청되었지만 캐시에 없었던 횟수)입니다. 아래 계산은 캐시에서 만족된 시도된 접근의 비율을 제공합니다:
keyspace_hits / (keyspace_hits + keyspace_misses) * 100
Reference
https://redis.io/docs/latest/develop/reference/eviction/ (opens in a new tab)