Redis : 키의 데이터베이스 크기 / 크기 표시
내 redis 인스턴스가 매우 커지고있는 것으로 보이며 거기에있는 여러 데이터베이스 중 어느 것이 얼마나 많은 메모리를 소비하는지 알고 싶습니다. Redis의 INFO
명령은 데이터베이스 당 총 크기와 키 수를 보여 주므로 많은 통찰력을 얻지 못합니다. 따라서 redis 서버를 모니터링 할 때 더 많은 정보를 제공하는 도구 / 아이디어는 감사하겠습니다.
Redis 문서는 특정 키의 소모 된 메모리를 반환 할 수있는 명령을 표시하지 않습니다. 따라서 버그가있는 코드가 redis에 많은 "쓰레기"를 작성하면 찾기가 정말 어려울 수 있습니다.
그래서 내 자신의 문제에 대한 나의 해결책 : redis-cli
조금 더 오래 놀아 본 후 나는 실제로 내가 찾던 무언가였던 of key DEBUG OBJECT <key>
와 같은 것을 드러내는 것을 발견했습니다 serializedlength
.
전체 데이터베이스 KEYS *
의 경우 선택한 스크립팅 언어로 너무 어렵지 않아야하는 모든 값을 집계 해야합니다.
나쁜 점은 redis.io 에 DEBUG OBJECT
.
의견의 해결책은 자체 답변이 필요합니다.
redis-cli --bigkeys
MEMORY USAGE key
명령은 키와 해당 값을 RAM에 저장하는 데 필요한 바이트 수를 제공합니다.
보고 된 사용량은 키 값에 필요한 데이터 및 관리 오버 헤드에 대한 총 메모리 할당입니다 (소스 redis 문서).
이 프로젝트를 살펴보면 정규식과 접두사를 기반으로 키 스페이스에 대한 흥미로운 통계가 출력됩니다. 이 DEBUG OBJECT
명령을 사용하고 db를 스캔하여 키 그룹을 식별하고 차지하는 공간의 비율을 추정합니다.
https://github.com/snmaynard/redis-audit
출력은 다음과 같습니다.
Summary
---------------------------------------------------+--------------+-------------------+---------------------------------------------------
Key | Memory Usage | Expiry Proportion | Last Access Time
---------------------------------------------------+--------------+-------------------+---------------------------------------------------
notification_3109439 | 88.14% | 0.0% | 2 minutes
user_profile_3897016 | 11.86% | 99.98% | 20 seconds
---------------------------------------------------+--------------+-------------------+---------------------------------------------------
또는 이것은 https://github.com/sripathikrishnan/redis-rdb-tools 오프라인으로 dump.rdb 파일을 분석하여 전체 키 공간에 대한 전체 분석을 수행합니다. 이것도 잘 작동합니다. db의 항목에 대한 평균 / 최소 / 최대 크기를 제공 할 수 있으며 접두사를 기반으로 할 수도 있습니다.
Redis 키를 샘플링하고 유형별로 그룹화하는 것이 매우 유용 할 수 있습니다. Salvatore는 검색된 키에 따라 약 10000 개의 명령을 실행 하는 redis-sampler 라는 도구를 작성했습니다 . 몇 초 또는 몇 분 만에 키 유형의 분포를 상당히 정확하게 볼 수 있습니다.RANDOMKEY
TYPE
나는 확장 (불행히도 작업과 관련이 있기 때문에 오픈 소스가 아님)을 작성했습니다.이 확장 기능은 정규식을 통해 키 이름에 대한 약간의 내성을 추가하여 어떤 종류의 응용 프로그램 키에 대한 아이디어를 제공합니다. 사용), Redis에 저장됩니다. redis-sampler의보다 일반적인 출력과 결합하면 무슨 일이 일어나고 있는지 매우 좋은 아이디어를 얻을 수 있습니다.
아마도 db 파일에 대해 몇 가지 내부 검사를 수행 할 수 있습니다. 프로토콜은 비교적 간단합니다 (아직 잘 문서화되지 않음). 따라서 어떤 개별 키가 많은 공간을 차지하고 있는지 확인하기 위해 파서를 작성할 수 있습니다.
새로운 제안 :
MONITOR
작성중인 내용을 확인하기 위해 사용해 보셨습니까 ? 이동중인 데이터에서 문제를 찾을 수있을 것입니다.
.net 애플리케이션 https://github.com/abhiyx/RedisSizeCalculator 를 사용하여 redis 키의 크기를 계산할 수 있습니다 .
같은 것에 대한 피드백을 주시기 바랍니다
참고 URL : https://stackoverflow.com/questions/7638542/redis-show-database-size-size-for-keys
'Program Tip' 카테고리의 다른 글
Matplotlib 개별 컬러 바 (0) | 2020.10.20 |
---|---|
정상적으로 node.js 종료 (0) | 2020.10.20 |
IList 또는 List를 사용하는 이유는 무엇입니까? (0) | 2020.10.20 |
UIView 애니메이션 대 CALayers (0) | 2020.10.19 |
ILookup 인터페이스 대 IDictionary (0) | 2020.10.19 |