[REDIS] 레디 스 명령은 사용 가능한 모든 키를 얻으려면?
REDIS레디 스 명령은 사용 가능한 모든 키를 얻으려면?
데이터베이스의 모든 키를 가져 오는위한 레디 스 명령이 있나요? 내가 그들을 가져 오는 몇 가지 파이썬 - 레디 스 라이브러리를 보았다. 하지만 레디 스 클라이언트에서 가능한 경우 궁금 해서요.
해결법
-
==============================
1.KEYS 명령을 살펴보십시오. 열쇠는 * 레디 스에 저장된 모든 키를 나열합니다.
KEYS 명령을 살펴보십시오. 열쇠는 * 레디 스에 저장된 모든 키를 나열합니다.
편집 : KEYS 문서 페이지의 상단에있는 경고에 유의하십시오 :
UPDATE (V2.8 이상은) : SCAN은 서버를 차단하지 않는다는 의미에서, 키에 우수한 대안도 아니다 상당한 자원을 소비한다. 그것을 사용 안함.
-
==============================
2.레디 스 2.8과 이상 업데이트
레디 스 2.8과 이상 업데이트
이 질문에 대한 이전 답변 코멘트에서 언급 한 바와 같이 귀하의 레디 스 서버가 IT 서비스를 제공하면서 다른 작업을 수행 할 사용할 수 없습니다 때문에, 열쇠는 잠재적으로 위험한 명령입니다. 키 또 다른 위험은 따라서 가능성이 서버의 메모리를 소모, 응답 버퍼를 준비합니다 (키 스페이스의 크기에 따라 다름) RAM을 많이 소비 할 수 있다는 것입니다.
레디 스의 버전 2.8이 훨씬 더 정중과 같은 목적으로 사용할 수있는 명령의 SCAN 제품군을 출시했다.
CLI는 또한 작업 할 좋은 방법을 제공합니다 :
$ redis-cli --scan --pattern '*'
-
==============================
3.그것은 당신이 원격 레디 스 서버에 연결 한 다음, 명령, 그 사용 레디 스-CLI를 발생할 수 있습니다 :
그것은 당신이 원격 레디 스 서버에 연결 한 다음, 명령, 그 사용 레디 스-CLI를 발생할 수 있습니다 :
KEYS *
아무것도 보여, 이상하지, 그것은 보여줍니다 : (빈 목록 또는 세트)
당신은 절대적으로 확인 레디 스 서버를 사용하면 사용이 어쩌면 당신의 레디 스-CLI가 레디 스 올바른 데이터베이스 인스턴스에 연결되지 않은 사용자가 데이터를 가지고있는 하나입니다 경우.
그것이 레디 스의 문서에서 언급 한 것처럼, 새로운 연결은 0 dB로 기본값으로 연결합니다.
내 데이터베이스 원하는 DB를 사용 SELECT를 선택하려면 1. 이었기 때문에 내 경우 키에 명령 결과를 검색되지 않았습니다. DB를은 정수로 식별됩니다.
SELECT 1 KEYS *
이전 답변 중 누구도 내 문제를 해결하지 않았기 때문에 나는이 정보를 게시 할 수 있습니다.
-
==============================
4.-> 레디 스-CLI에서 모든 키를 가져옵니다
-> 레디 스-CLI에서 모든 키를 가져옵니다
-redis 127.0.0.1:6379> keys *
-> 패턴의 목록을 가져옵니다
-redis 127.0.0.1:6379> keys d??
이 세 가지 문자로 'D'로 시작하는 키를 생성합니다.
-redis 127.0.0.1:6379> keys *t*
이 키의 일치 't'문자 키를 얻을 것이다
->으로 명령 줄에서 키를 계산
-redis-cli keys * |wc -l
-> 또는 당신은 dbsize을 사용할 수 있습니다
-redis-cli dbsize
-
==============================
5.다음 레디 스 치트 시트를 살펴 보자. 와 레디 스 키의 하위 집합 얻으려면 내가 명령을 사용 레디 스를-cli를
다음 레디 스 치트 시트를 살펴 보자. 와 레디 스 키의 하위 집합 얻으려면 내가 명령을 사용 레디 스를-cli를
KEYS "prefix:*"
-
==============================
6.예, 당신은이를 사용하여 모든 키를 얻을 수 있습니다
예, 당신은이를 사용하여 모든 키를 얻을 수 있습니다
var redis = require('redis'); redisClient = redis.createClient(redis.port, redis.host); redisClient.keys('*example*', function (err, keys) { })
-
==============================
7.SCAN을 수행합니다 키와 같은 메모리에 모든 키를로드하기 위해 클라이언트를 필요로하지 않습니다. SCAN은 당신에게 당신이 사용할 수있는 반복자를 제공합니다. 내 레디 스에서 1B 레코드를했고 나는 충분한 메모리가 한 번에 모든 키를 반환 할 수 없었습니다.
SCAN을 수행합니다 키와 같은 메모리에 모든 키를로드하기 위해 클라이언트를 필요로하지 않습니다. SCAN은 당신에게 당신이 사용할 수있는 반복자를 제공합니다. 내 레디 스에서 1B 레코드를했고 나는 충분한 메모리가 한 번에 모든 키를 반환 할 수 없었습니다.
여기에 패턴과 일치하는 저장소에서 모든 키를 얻을 수 및 삭제하는 파이썬 코드 조각입니다 :
import redis r = redis.StrictRedis(host='localhost', port=6379, db=0) for key in r.scan_iter("key_pattern*"): print key
-
==============================
8.
redis-cli -h <host> -p <port> keys *
여기서 * 모든 키를 나열하는 패턴이다
-
==============================
9.KEYS 패턴
KEYS 패턴
패턴과 일치하는 모든 키를 돌려줍니다.
경고 :이 대용량 데이터베이스 대신 스캔 또는 세트를 사용할 수 있습니다 KEYS에 대해 실행 될 때 성능을 망칠 수 있기 때문에이 명령은 사용하지 않는 것이 좋습니다.
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"
-
==============================
10.당신의 레디 스 클러스터 인 경우,이 스크립트를 사용할 수 있습니다
당신의 레디 스 클러스터 인 경우,이 스크립트를 사용할 수 있습니다
#!/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"
-
==============================
11.레디 스 서버에서 사용할 수있는 모든 키를 취득하기 위하여는, 당신은 레디 스 - CLI 및 유형을 열어야합니다 : KEYS * 더 많은 도움을 얻기 위해이 페이지를 방문하십시오 : 이 링크
레디 스 서버에서 사용할 수있는 모든 키를 취득하기 위하여는, 당신은 레디 스 - CLI 및 유형을 열어야합니다 : KEYS * 더 많은 도움을 얻기 위해이 페이지를 방문하십시오 : 이 링크
-
==============================
12.우리는 레디 스 2.8 이상에서 --scan --pattern를 사용해야합니다.
우리는 레디 스 2.8 이상에서 --scan --pattern를 사용해야합니다.
당신은 레디 스-CLI의 상단에이 래퍼를 사용하여 시도 할 수 있습니다. https://github.com/VijayantSoni/redis-helper
from https://stackoverflow.com/questions/5252099/redis-command-to-get-all-available-keys by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 어떻게 생산 resque 노동자를 배포하려면? (0) | 2019.12.31 |
---|---|
[REDIS] 어떻게 붙어 / 오래된 Resque 노동자를 삭제합니까? (0) | 2019.12.31 |
[REDIS] 어떻게 레디 스 서버를 중지 할 수 있습니다? (0) | 2019.12.31 |
[REDIS] 레디 스에서 파이프 라인을 사용할 때 왜 이렇게 10 만 개 레코드로 둔화되고? (0) | 2019.12.31 |
[REDIS] 방법 레디 스에서 특정 패턴과 일치하지 않는 키를 얻으려면? (0) | 2019.12.31 |