레디스는 in-memory DB이기 때문에 메모리를 효율적으로 다루는게 가장 중요한 부분중 하나
Eviction
Redis의 메모리 관리
maxmemory 100mb
maxmemory-policy noeviction
eviction 정책 설정 maxmemory-policy 옵션
noeviction: eviction 없음, 추가 데이터는 저장되지 않고 에러 발생(replication 사용시 master에 적용)
allkeys-lru: 가장 최근에 사용된 키들을 남기고 나머지를 삭제(LRU: Least Recently Used)
allkeys-lfu: 가장 빈번하게 사용된 키들을 남기고 나머지를 삭제(LFU: Least Frequently Used)
volatile-lru: LRU를 사용하되 expire field가 true로 설정된 항목들 중에서만 삭제
volatile-lfu: LFU를 사용하되 expire field가 true로 설정된 항목들 중에서만 삭제
allkeys-random: 랜덤하게 삭제
volatile-random: expire field가 true로 설정된 항목들 중에서 랜덤하게 삭제
volatile-ttl: expire field가 true로 설정된 항목들 중에서 짧은 TTL 순으로 삭제
Redis는 설치된 환경에 영향을 많이 받는 시스템
Redis 성능 측정(redis-benchmark)
redis-benchmark [-h host] [-p port] [-c clients] [-n requests] -> redis-benchmark -c 100 -n 100 -t SET
어플리케이션에서 비용이 많이 들어가는 무리한 쿼리를 날리면 성능이 저하되고 병목이 일어난다
그런 쿼리는 찾아내서 튜닝을 하거나 막아야하는데 느린 쿼리를 기록하고 찾아내는 방법이 SLOWLOG다
SLOWLOG 설정
로깅되는 기준 시간 (microseconds)
slowlog-log-slower-than 10000
로그 최대 길이
slowlog-max-len 128
slowlog 개수 확인
slowlog len
slowlog 조회
slowlog get [count]
실행결과
일련번호, 시간, 소요시간, 명령어, 클라이언트 IP, 클라이언트 이름 순으로 나옴
※ 클라이언트 이름은 클라이언트 쪽에서 set을 했을 경우만 출력
출처 : fastcampus