DBAtlas · 데이터베이스 운영 아틀라스

큰 key 찾기 (--bigkeys, --memkeys, MEMORY USAGE)

Redis메모리

명령어

# Largest keys per type by element count:
redis-cli -h redis1 -p 6379 --bigkeys -i 0.01
# By memory size:
redis-cli -h redis1 -p 6379 --memkeys -i 0.01
# Size and length together, top 20 keys (redis-cli 7.4+):
redis-cli -h redis1 -p 6379 --keystats --top 20 -i 0.01
# Memory usage (SAMPLES 0: all elements) and encoding of a single suspicious key:
redis-cli -h redis1 -p 6379 MEMORY USAGE kullanici:1001:sepet SAMPLES 0
redis-cli -h redis1 -p 6379 OBJECT ENCODING kullanici:1001:sepet

하는 일

SCAN으로 keyspace를 스캔하여 타입별로 요소가 가장 많은 key와 메모리를 가장 많이 쓰는 key를 보고한다. 의심 key의 실제 메모리 소비와 encoding을 보여 준다.

사용 시점

메모리가 예기치 않게 증가할 때, 단일 명령(HGETALL, SMEMBERS, DEL)이 지연을 일으킬 때, 또는 클러스터의 한 노드가 다른 노드보다 메모리를 더 쓸 때.

주의

스캔은 SCAN을 사용하여 서버를 블로킹하지 않지만 keyspace 전체를 순회한다. -i 0.01은 SCAN 호출 100회마다 대기하여 부하를 줄인다. 큰 key를 DEL로 삭제하면 메인 스레드가 블로킹되므로 UNLINK를 사용한다. SAMPLES 0인 MEMORY USAGE는 큰 컬렉션에서 O(N)이다. replica에서 실행하면 master에 부하를 주지 않는다.

DBAtlas에서 열기 →

관련 항목