Redis에서 문제 해결하는 방법

소개

Redis는 오픈 소스 인메모리 키-값 데이터 저장소입니다. 이는 문제 해결 및 디버깅에 도움이 되는 여러 명령어와 함께 제공됩니다. Redis의 성격상 인메모리 키-값 저장소로, 이러한 명령어 중 많은 것이 메모리 관리에 중점을 두지만, Redis 서버의 상태 개요를 제공하는 데 유용한 다른 명령어도 있습니다. 이 튜토리얼에서는 Redis 사용 중에 발생할 수 있는 문제를 진단하고 해결하는 데 도움이 되는 일부 명령어를 사용하는 방법에 대한 세부 정보를 제공합니다.

이 가이드 사용 방법

이 가이드는 자체 포함된 예제를 가진 치트 시트로 작성되었습니다. 작업을 완료하려는 작업과 관련된 섹션으로 이동하는 것을 권장합니다.

이 가이드에 표시된 명령어는 Redis 버전 6.0.16을 실행하는 Ubuntu 22.04 서버에서 테스트되었습니다. 비슷한 환경을 설정하려면 Ubuntu 22.04에 Redis를 설치하고 보안 설정하는 방법에 대한 단계 1을 따를 수 있습니다. 이 명령어의 동작을 redis-cli를 사용하여 보여드릴 것입니다. 다른 Redis 인터페이스를 사용하는 경우 — 예를 들어 Redli — 특정 명령의 정확한 출력이 다를 수 있습니다.

또 다른 방법으로는 이러한 명령을 테스트하기 위해 관리형 Redis 데이터베이스 인스턴스를 제공할 수 있지만, 데이터베이스 제공업체가 허용하는 제어 수준에 따라이 가이드의 일부 명령이 설명된 대로 작동하지 않을 수 있습니다. DigitalOcean 관리형 데이터베이스를 프로비저닝하려면 관리형 데이터베이스 제품 설명서를 따르십시오. 그런 다음 TLS를 통해 관리형 데이터베이스에 연결하려면

memory usage는 현재 단일 키에 의해 사용되는 메모리 양을 알려줍니다. 키의 이름을 인수로 사용하고 사용하는 바이트 수를 출력합니다. 먼저 예제 변수를 설정하십시오:

  1. set key_meaningOfLife "Food"

다음으로 memory usage로 메모리를 확인하십시오:

  1. memory usage key_meaningOfLife
Output
(integer) 88

Redis 서버가 메모리를 사용하는 방식에 대한 보다 일반적인 이해를 위해 memory stats 명령을 실행할 수 있습니다:

  1. memory stats

이 명령은 메모리와 관련된 지표 및 해당 값의 배열을 출력합니다. 다음은 memory stats에서 보고된 메트릭입니다:

  • peak.allocated: Redis에서 사용 된 최대 바이트 수
  • total.allocated: Redis에서 할당 된 총 바이트 수
  • startup.allocated: 시작시 Redis에서 사용 된 초기 바이트 수
  • replication.backlog: 바이트 단위의 복제 대기열 크기
  • clients.slaves: 모든 복제체의 총 크기오버헤드, 출력 및 쿼리 버퍼 및 연결 컨텍스트의 의미
  • clients.normal: 모든 클라이언트 오버헤드의 총 크기
  • aof.buffer: 현재 및 재작성된 append-only file 버퍼의 총 크기
  • db.0: 서버에서 사용중인 각 데이터베이스의 주요 및 만료 사전의 오버헤드, 바이트로 보고됨
  • overhead.total: Redis 키 공간을 관리하는 데 사용되는 모든 오버헤드의 합계
  • keys.count: 서버의 모든 데이터베이스에 저장된 키의 총 수
  • keys.bytes-per-key: 서버의 순 메모리 사용량과 keys.count의 비율
  • dataset.bytes: 데이터 세트의 크기, 바이트 단위
  • dataset.percentage: Redis의 순 메모리 사용량 중 dataset.bytes가 차지하는 비율
  • peak.percentage: total.allocatedpeak.allocated가 차지하는 비율
  • 분할: 현재 사용 중인 메모리 양을 물리적 메모리 Redis가 실제로 사용하는 양으로 나눈 비율

memory malloc-stats는 리눅스 시스템에서 Redis에서 사용하는 메모리 할당자인 jemalloc의 내부 통계 보고서를 제공합니다:

  1. memory malloc-stats

메모리 관련 문제를 겪고 있는 것처럼 보이지만 이전 명령어의 출력을 구문 분석하는 것이 도움이 되지 않는 경우, memory doctor를 실행해 볼 수 있습니다:

  1. memory doctor

이 기능은 찾을 수 있는 메모리 소비 문제를 출력하고 가능한 해결책을 제안합니다.

Redis 인스턴스에 대한 일반 정보 가져오기

A debugging command that isn’t directly related to memory management is monitor. This command allows you to review a constant stream of every command processed by the Redis server:

  1. monitor
Output
OK 1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared" 1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"

디버깅에 유용한 또 다른 명령어는 info입니다. 이 명령어는 서버에 대한 여러 정보와 통계를 반환합니다:

  1. info
Output
# Server redis_version:6.0.16 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:a3fdef44459b3ad6 redis_mode:standalone os:Linux 5.15.0-41-generic x86_64 . . .

이 명령어는 많은 정보를 반환합니다. 하나의 정보 블록만 반환하려면 info에 인수로 지정할 수 있습니다:

  1. info CPU
Output
# CPU used_cpu_sys:173.16 used_cpu_user:70.89 used_cpu_sys_children:0.01 used_cpu_user_children:0.04

info 명령어로 반환되는 정보는 사용 중인 Redis 버전에 따라 다를 수 있습니다.

keys 명령어 사용하기

keys 명령어는 키의 이름을 잊어버렸거나 실수로 이름을 잘못 입력한 경우에 유용합니다. keys는 패턴과 일치하는 키를 검색합니다:

  1. keys pattern

다음과 같은 글로브 스타일 변수가 지원됩니다:

  • ?는 어떤 단일 문자에 대해서도 일치하는 와일드카드입니다. 따라서 s?mmysammy, sommy, sqmmy와 일치합니다
  • *는 아무 문자나 포함하지 않은 문자를 포함하여 어떤 수의 문자와도 일치하는 와일드카드입니다. 따라서 sa*ysammy, say, sammmmmmy, salmony와 일치합니다
  • 패턴에 포함될 수 있는 두 개 이상의 문자를 괄호로 묶어 지정할 수 있습니다. 그래서 s[ai]mmysammysimmy와 일치하지만 summy와 일치하지 않습니다
  • 하나 이상의 문자를 무시하는 와일드카드를 설정하려면 해당 문자를 괄호로 묶고, 선행하여 삽입하면 됩니다(^). 따라서 s[^oi]mmysammysxmmy와 일치하지만 sommysimmy와 일치하지 않습니다
  • 문자 범위를 포함하는 와일드카드를 설정하려면 범위의 시작과 끝을 하이픈으로 구분하고 괄호로 묶으면 됩니다. 따라서 s[a-o]mmysammy, skmmy, sommy와 일치하지만 srmmy와 일치하지 않습니다

경고: Redis 문서keys가 성능에 중대한 부정적인 영향을 미칠 수 있으므로 거의 절대적으로 프로덕션 환경에서 사용되지 않아야 함을 경고합니다.

결론

이 안내서는 Redis 작업 중에 발생할 수 있는 문제를 해결하는 데 도움이 되는 여러 명령을 설명합니다. 이 안내서에서 학습하고 싶은 다른 관련 명령, 인수 또는 절차가 있다면 댓글에서 질문하거나 제안하십시오.

Redis 명령에 대한 자세한 정보는 Redis 데이터베이스 관리 방법 시리즈 튜토리얼을 확인하십시오.

Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis