답변:
KEYS
명령 을 봅니다 . KEYS *
redis에 저장된 모든 키를 나열합니다.
편집 :KEYS
설명서 페이지 상단의 경고에 유의 하십시오.
시간 복잡도 : 데이터베이스의 키 이름과 주어진 패턴의 길이가 제한되어 있다는 가정하에 N은 데이터베이스의 키 수인 N (N)입니다.
UPDATE (V2.8 이상) : SCAN
는 KEYS
서버를 차단하지 않거나 상당한 리소스를 소비하지 않는다는 점에서의 대안 입니다. 그것을 사용하는 것을 선호하십시오.
KEYS
대용량 데이터 세트를 쿼리 할 때 서버를 더 오래 차단할 수 있다는 것입니다.
Redis 2.8 이상용으로 업데이트되었습니다
이 질문에 대한 이전 답변의 의견에서 언급했듯이 KEYS
Redis 서버가 다른 작업을 수행하는 동안 서버를 사용할 수 없으므로 잠재적으로 위험한 명령입니다. 또 다른 위험 KEYS
은 응답 버퍼를 준비하기 위해 많은 RAM을 (키 공간의 크기에 따라) 소비하여 서버의 메모리를 소진시킬 수 있다는 것입니다.
Redis 버전 2.8 은 훨씬 더 정중하고 동일한 목적으로 사용할 수있는 SCAN 명령 제품군을 도입했습니다 .
CLI는 또한 좋은 작업 방법을 제공합니다.
$ redis-cli --scan --pattern '*'
redis-cli를 사용하면 원격 redis-server에 연결 한 후 다음 명령이 발생할 수 있습니다.
KEYS *
아무것도 보여주지 않거나 더 잘 보여줍니다.
(empty list or set)
사용중인 Redis 서버가 데이터를 보유한 서버인지 확실하면 redis-cli가 Redis 올바른 데이터베이스 인스턴스에 연결되지 않은 것일 수 있습니다.
Redis 문서에서 언급했듯이 새 연결은 기본적으로 db 0에 연결됩니다 .
필자의 경우 KEYS
데이터베이스가 1이기 때문에 명령에서 결과를 검색하지 못했습니다 . 원하는 db를 선택하려면 SELECT를 사용하십시오 .
db는 정수로 식별됩니다.
SELECT 1
KEYS *
이전 답변 중 어느 것도 내 문제를 해결하지 못했기 때문에이 정보를 게시합니다.
-> redis-cli에서 모든 키 가져 오기
-redis 127.0.0.1:6379> keys *
-> 패턴 목록 가져 오기
-redis 127.0.0.1:6379> keys d??
그러면 3 자로 시작하는 'd'로 시작하는 키가 생성됩니다.
-redis 127.0.0.1:6379> keys *t*
이것은 키에서 't'문자와 일치하는 키를 얻습니다.
-> 명령 줄에서 키를 계산
-redis-cli keys * |wc -l
-> 또는 사용할 수 있습니다 dbsize
-redis-cli dbsize
key *t*
에 keys *t*
.
Redis Cheat Sheet 다음을 살펴보십시오 . redis-cli로 redis 키의 하위 집합을 얻으려면 다음 명령을 사용하십시오.
KEYS "prefix:*"
스캔은 클라이언트가 KEYS처럼 모든 키를 메모리에로드 할 필요가 없습니다. SCAN은 사용할 수있는 반복자를 제공합니다. 내 redis에 1B 레코드가 있었고 모든 키를 한 번에 반환하기에 충분한 메모리를 얻을 수 없었습니다.
다음은 상점에서 패턴과 일치하는 모든 키를 가져 와서 삭제하는 파이썬 스 니펫입니다.
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
print key
redis-cli -h <host> -p <port> keys *
여기서 *는 모든 키를 나열하는 패턴입니다.
redis-cli -h <host> -p <port> keys '*'
키 패턴
1.0.0부터 사용 가능합니다.
시간 복잡도 : 데이터베이스의 키 이름과 주어진 패턴의 길이가 제한되어 있다는 가정하에 N은 데이터베이스의 키 수인 N (N)입니다.
패턴과 일치하는 모든 키를 반환합니다.
경고 : 이 명령은 KEYS 대신 큰 데이터베이스에 대해 실행될 때 성능을 손상시킬 수 있으므로 SCAN 또는 SETS를 사용할 수 있으므로 사용하지 않는 것이 좋습니다 .
사용할 KEYS 명령의 예 :
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
redis가 클러스터 인 경우이 스크립트를 사용할 수 있습니다
#!/usr/bin/env bash
redis_list=("172.23.3.19:7001,172.23.3.19:7002,172.23.3.19:7003,172.23.3.19:7004,172.23.3.19:7005,172.23.3.19:7006")
arr=($(echo "$redis_list" | tr ',' '\n'))
for info in ${arr[@]}; do
echo "start :${info}"
redis_info=($(echo "$info" | tr ':' '\n'))
ip=${redis_info[0]}
port=${redis_info[1]}
echo "ip="${ip}",port="${port}
redis-cli -c -h $ip -p $port set laker$port '湖人总冠军'
redis-cli -c -h $ip -p $port keys \*
done
echo "end"
레디 스 서버에서 사용할 수있는 모든 키를 취득하기 위하여는, 당신은 레디 스-CLI을 열고 다음을 입력한다 :
KEYS *
이 페이지를 방문하시기 바랍니다 더 많은 도움을 얻기 위해 :
이 링크
redis 2.8 이상에서 --scan --pattern을 사용해야합니다.
redis-cli 위에이 래퍼를 사용해 볼 수 있습니다. https://github.com/VijayantSoni/redis-helper
redis-cli를 사용하여 redis 서버에 연결하고 데이터베이스를 선택하고 KEYS *를 입력하면 선택한 redis 데이터베이스에있는 모든 키가 제공됩니다.
redis-cli keys "*"