Redis에서 키 수를 인쇄하는 방법이 있습니까?
나는 알고있어
keys *
그러나 그것은 약간 무거운 무게로 보입니다. -Redis가 핵심 가치 저장소라는 점을 감안할 때 이것이 유일한 방법 일 것입니다. 하지만 난 여전히 라인을 따라 뭔가를보고 싶습니다
count keys *
답변
서버에 대한 정보 및 통계를 리턴하는 INFO 명령을 실행할 수 있습니다. 예제 출력 은 여기 를 참조 하십시오 .
mVChr의 의견에서 언급했듯이 info keyspace
redis-cli에서 직접 사용할 수 있습니다 .
답변
답변
경고 : 프로덕션 머신에서는 이것을 실행하지 마십시오.
Linux 박스에서 :
redis-cli KEYS "*" | wc -l
참고 : 아래 주석에서 언급했듯이 이것은 O (N) 작업이므로 키가 많은 대형 DB에서는이를 사용하지 않아야합니다. 소규모 배포의 경우 문제가 없습니다.
답변
총 키 수를 계산하려면 아래 명령을 사용하십시오.
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으로 나눕니다. 따라서 응용 프로그램이 총 수에 관심이있는 경우 일치하는 키를 자주 사용하면 실제 값에 가까워 질 때마다
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)