Redis에서 키 수 인쇄
Redis에서 키 수를 인쇄하는 방법이 있습니까?
나는 알고있어
keys *
그러나 그것은 약간 무거운 무게로 보입니다. -Redis가 핵심 가치 저장소라는 점을 감안할 때 이것이 유일한 방법 일 것입니다. 하지만 난 여전히 라인을 따라 뭔가를보고 싶습니다
count keys *
서버에 대한 정보 및 통계를 리턴하는 INFO 명령을 실행할 수 있습니다. 예제 출력 은 여기 를 참조 하십시오 .
mVChr의 의견에서 언급했듯이 info keyspaceredis-cli에서 직접 사용할 수 있습니다 .
DBSIZE 키 수를 반환하고 구문 분석하기가 더 쉽습니다.
단점 : 키가 만료 된 경우 여전히 계산 될 수 있습니다.
http://redis.io/commands/dbsize
경고 : 프로덕션 머신에서는 이것을 실행하지 마십시오.
Linux 박스에서 :
redis-cli KEYS "*" | wc -l
참고 : 아래 주석에서 언급했듯이 이것은 O (N) 작업이므로 키가 많은 대형 DB에서는이를 사용하지 않아야합니다. 소규모 배포의 경우 문제가 없습니다.
DBSIZE이 키를 사용하지 않습니다 사용
현재 선택된 데이터베이스의 키 수를 반환합니다.
더 많은 http://redis.io/commands/dbsize 를 읽으려면
총 키 수를 계산하려면 아래 명령을 사용하십시오.
127.0.0.1:6379> DBSIZE
Redis 2.6부터 lua가 지원되므로 이와 같은 와일드 카드 키를 얻을 수 있습니다
eval "return #redis.call('keys', 'prefix-*')" 0
평가 명령을 참조하십시오
dbsize() 총 키 수를 반환합니다.
무작위로 키를 샘플링 한 다음 패턴과 일치하는 부분을 확인하여 주어진 패턴과 일치하는 키 수를 빠르게 추정 할 수 있습니다.
파이썬의 예; 로 시작하는 모든 키 계산 prefix_:
import redis
r = redis.StrictRedis(host = 'localhost', port=6379)
iter=1000
print 'Approximately', r.dbsize() * float(sum([r.randomkey().startswith('prefix_') for i in xrange(iter)])) / iter
심지어 iter=100아직에 비해 매우 빠르고, 내 경우에 유리한 견적을 제공합니다 keys prefix_.
개선 된 방법은 모든 요청에서 1000 개의 키를 샘플링하지만 총 개수를 유지하여 두 요청을 2000으로 나누고 세 요청을 3000으로 나눕니다. 따라서 응용 프로그램이 총 수에 관심이있는 경우 일치하는 키를 자주 사용하면 실제 값에 가까워 질 때마다
Redis 2.6 이후에는 INFO 명령의 결과가 섹션별로 분할됩니다. "키 스페이스"섹션에는 몇 개의 키가 있는지 알려주는 "키"및 "만료 된 키"필드가 있습니다.
eval "local count = redis.call('scan', 0, 'match', 'key:*:key', 'count', 10000) if count ~= 0 then return #count[2] end " 0
eval "local count = redis.call('sscan', 'key.key:all', 0, 'match', '*', 'count', 1000000) if count ~= 0 then return #count[2] end " 0
참고 URL : https://stackoverflow.com/questions/9888387/print-number-of-keys-in-redis
'IT' 카테고리의 다른 글
| 테스트 어댑터가 설치된 테스트 탐색기에 NUnit 장치 테스트가 표시되지 않음 (0) | 2020.06.23 |
|---|---|
| 구속 조건을 동시에 만족시킬 수 없으며 구속 조건을 해제하여 복구를 시도합니다. (0) | 2020.06.23 |
| 더프의 장치는 어떻게 작동합니까? (0) | 2020.06.23 |
| 한 벡터를 다른 벡터로 복사하는 빠른 방법 (0) | 2020.06.23 |
| 댓글 바로 가기 Android Studio (0) | 2020.06.23 |