[redis] 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에서는이를 사용하지 않아야합니다. 소규모 배포의 경우 문제가 없습니다.


답변

총 키 수를 계산하려면 아래 명령을 사용하십시오.

127.0.0.1:6379> DBSIZE


답변

DBSIZE 이 키를 사용하지 않습니다 사용

현재 선택된 데이터베이스의 키 수를 반환합니다.

더 많은 http://redis.io/commands/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으로 나눕니다. 따라서 응용 프로그램이 총 수에 관심이있는 경우 일치하는 키를 자주 사용하면 실제 값에 가까워 질 때마다