복붙노트

[REDIS] 레디 스 명령은 사용 가능한 모든 키를 얻으려면?

REDIS

레디 스 명령은 사용 가능한 모든 키를 얻으려면?

데이터베이스의 모든 키를 가져 오는위한 레디 스 명령이 있나요? 내가 그들을 가져 오는 몇 가지 파이썬 - 레디 스 라이브러리를 보았다. 하지만 레디 스 클라이언트에서 가능한 경우 궁금 해서요.

해결법

  1. ==============================

    1.KEYS 명령을 살펴보십시오. 열쇠는 * 레디 스에 저장된 모든 키를 나열합니다.

    KEYS 명령을 살펴보십시오. 열쇠는 * 레디 스에 저장된 모든 키를 나열합니다.

    편집 : KEYS 문서 페이지의 상단에있는 경고에 유의하십시오 :

    UPDATE (V2.8 이상은) : SCAN은 서버를 차단하지 않는다는 의미에서, 키에 우수한 대안도 아니다 상당한 자원을 소비한다. 그것을 사용 안함.

  2. ==============================

    2.레디 스 2.8과 이상 업데이트

    레디 스 2.8과 이상 업데이트

    이 질문에 대한 이전 답변 코멘트에서 언급 한 바와 같이 귀하의 레디 스 서버가 IT 서비스를 제공하면서 다른 작업을 수행 할 사용할 수 없습니다 때문에, 열쇠는 잠재적으로 위험한 명령입니다. 키 또 다른 위험은 따라서 가능성이 서버의 메모리를 소모, 응답 버퍼를 준비합니다 (키 스페이스의 크기에 따라 다름) RAM을 많이 소비 할 수 있다는 것입니다.

    레디 스의 버전 2.8이 훨씬 더 정중과 같은 목적으로 사용할 수있는 명령의 SCAN 제품군을 출시했다.

    CLI는 또한 작업 할 좋은 방법을 제공합니다 :

    $ redis-cli --scan --pattern '*'
    
  3. ==============================

    3.그것은 당신이 원격 레디 스 서버에 연결 한 다음, 명령, 그 사용 레디 스-CLI를 발생할 수 있습니다 :

    그것은 당신이 원격 레디 스 서버에 연결 한 다음, 명령, 그 사용 레디 스-CLI를 발생할 수 있습니다 :

    KEYS *
    

    아무것도 보여, 이상하지, 그것은 보여줍니다 : (빈 목록 또는 세트)

    당신은 절대적으로 확인 레디 스 서버를 사용하면 사용이 어쩌면 당신의 레디 스-CLI가 레디 스 올바른 데이터베이스 인스턴스에 연결되지 않은 사용자가 데이터를 가지고있는 하나입니다 경우.

    그것이 레디 스의 문서에서 언급 한 것처럼, 새로운 연결은 0 dB로 기본값으로 연결합니다.

    내 데이터베이스 원하는 DB를 사용 SELECT를 선택하려면 1. 이었기 때문에 내 경우 키에 명령 결과를 검색되지 않았습니다. DB를은 정수로 식별됩니다.

    SELECT 1
    KEYS *
    

    이전 답변 중 누구도 내 문제를 해결하지 않았기 때문에 나는이 정보를 게시 할 수 있습니다.

  4. ==============================

    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. ==============================

    5.다음 레디 스 치트 시트를 살펴 보자. 와 레디 스 키의 하위 집합 얻으려면 내가 명령을 사용 레디 스를-cli를

    다음 레디 스 치트 시트를 살펴 보자. 와 레디 스 키의 하위 집합 얻으려면 내가 명령을 사용 레디 스를-cli를

    KEYS "prefix:*"
    
  6. ==============================

    6.예, 당신은이를 사용하여 모든 키를 얻을 수 있습니다

    예, 당신은이를 사용하여 모든 키를 얻을 수 있습니다

    var redis = require('redis');
    redisClient = redis.createClient(redis.port, redis.host);    
      redisClient.keys('*example*', function (err, keys) {
    })
    
  7. ==============================

    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. ==============================

    8.

    redis-cli -h <host> -p <port> keys * 
    

    여기서 * 모든 키를 나열하는 패턴이다

  9. ==============================

    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. ==============================

    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. ==============================

    11.레디 스 서버에서 사용할 수있는 모든 키를 취득하기 위하여는, 당신은 레디 스 - CLI 및 유형을 열어야합니다 : KEYS * 더 많은 도움을 얻기 위해이 페이지를 방문하십시오 : 이 링크

    레디 스 서버에서 사용할 수있는 모든 키를 취득하기 위하여는, 당신은 레디 스 - CLI 및 유형을 열어야합니다 : KEYS * 더 많은 도움을 얻기 위해이 페이지를 방문하십시오 : 이 링크

  12. ==============================

    12.우리는 레디 스 2.8 이상에서 --scan --pattern를 사용해야합니다.

    우리는 레디 스 2.8 이상에서 --scan --pattern를 사용해야합니다.

    당신은 레디 스-CLI의 상단에이 래퍼를 사용하여 시도 할 수 있습니다. https://github.com/VijayantSoni/redis-helper

  13. from https://stackoverflow.com/questions/5252099/redis-command-to-get-all-available-keys by cc-by-sa and MIT license