Program Tip

Redis : 키의 데이터베이스 크기 / 크기 표시

programtip 2020. 10. 20. 08:01
반응형

Redis : 키의 데이터베이스 크기 / 크기 표시


내 redis 인스턴스가 매우 커지고있는 것으로 보이며 거기에있는 여러 데이터베이스 중 어느 것이 얼마나 많은 메모리를 소비하는지 알고 싶습니다. Redis의 INFO명령은 데이터베이스 당 총 크기와 키 수를 보여 주므로 많은 통찰력을 얻지 못합니다. 따라서 redis 서버를 모니터링 할 때 더 많은 정보를 제공하는 도구 / 아이디어는 감사하겠습니다.

Redis 문서는 특정 키의 소모 된 메모리를 반환 할 수있는 명령을 표시하지 않습니다. 따라서 버그가있는 코드가 redis에 많은 "쓰레기"를 작성하면 찾기가 정말 어려울 수 있습니다.


그래서 내 자신의 문제에 대한 나의 해결책 : redis-cli조금 더 오래 놀아 본 후 나는 실제로 내가 찾던 무언가였던 of key DEBUG OBJECT <key>와 같은 것을 드러내는 것을 발견했습니다 serializedlength.

전체 데이터베이스 KEYS *의 경우 선택한 스크립팅 언어로 너무 어렵지 않아야하는 모든 값을 집계 해야합니다.

나쁜 점은 redis.ioDEBUG 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 라는 도구를 작성했습니다 . 몇 초 또는 몇 분 만에 키 유형의 분포를 상당히 정확하게 볼 수 있습니다.RANDOMKEYTYPE

나는 확장 (불행히도 작업과 관련이 있기 때문에 오픈 소스가 아님)을 작성했습니다.이 확장 기능은 정규식을 통해 키 이름에 대한 약간의 내성을 추가하여 어떤 종류의 응용 프로그램 키에 대한 아이디어를 제공합니다. 사용), 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

반응형