이 글에서는 Redis가 특정 접두사를 얻기 위한 핵심 스크립트에 대한 관련 정보를 주로 소개합니다. Redis를 필요로 하는 모든 사람이 학습하거나 사용할 수 있도록 예제 코드를 통해 자세히 소개합니다. 아래에서 따라갈 수 있습니다.
1. 배경
일상적인 유지 관리에서 요청이 많은 Redis에서는 키 *가 직접 차단을 발생시키는 경우가 많습니다.
점증적인 반복을 위해 스캔을 사용하고 파이프라인을 사용하여 쿼리를 사용하여 상호 작용을 줄이고 효율성을 향상시킬 수 있습니다.
2. 스캔 명령의 장점과 단점
SCAN 명령에는 SCAN, SSCAN, HSCAN 및 ZSCAN이 있습니다.
SCAN은 모든 키를 순회하는 것입니다.
다른 SCAN 명령의 경우 SCAN에서 선택한 집합입니다.
SCAN 명령은 증분 루프이며 각 호출은 요소의 작은 부분만 반환합니다. 따라서 KEYS 명령에는 함정이 없습니다.
SCAN 명령은 0부터 탐색을 시작하고 0에서 끝나는 커서를 반환합니다.
scan 0 1) "655" 2) 1) "test1" 2) "test2"
반환 값은 배열이고, 하나는 다음 주기의cursorId이고, 다른 하나는 요소 배열입니다. SCAN 명령은 매번 반환되는 값이 순서대로임을 보장하지 않습니다. 또한 동일한 키가 구분 없이 여러 번 반환될 수 있으므로 응용 프로그램 처리가 필요합니다.
또한 SCAN 명령은 COUNT를 지정할 수 있으며 기본값은 10입니다. 그러나 이는 지정한다고 해서 몇 개의 항목이 반환되는지를 의미하지는 않습니다. 이는 단지 참고 사항일 뿐, 그렇게 많은 항목이 반환된다는 보장은 없습니다.
장점:
주요 공간 순회 작업 제공, 커서 지원, 복잡성 O(1), 전체 순회에는 O(N)만 필요
결과 패턴 일치 제공; 한 번에 반환되는 데이터 수를 설정하지만 이는 단지 힌트일 뿐이며 때로는 더 많은 데이터가 반환될 수도 있습니다.
약한 상태, 모든 상태에서는 클라이언트가 커서만 유지해야 합니다.
단점:
은 완전한 스냅샷 순회를 제공할 수 없습니다. 즉, 중간에 데이터 수정이 있는 경우 변경과 관련된 일부 데이터가 순회되지 않을 수 있습니다.
#!/usr/bin/env python # -*- coding: UTF-8 -*- #作用:统计某个前缀key的个数,并将其输入到文件 #使用方法:python scan_redis.py apus* 100 __author__ = "lcl" import sys import redis import os pool=redis.ConnectionPool(host='192.168.225.128',port=6379,db=0) r = redis.StrictRedis(connection_pool=pool) #扫描匹配值,通过sys.argv传参 match = sys.argv[1] #每次匹配数量 count = sys.argv[2] #print match #print count #总数量 total = 0 #扫描到的key输出到文件 path = os.getcwd() #扫描到的key输出的文件 txt = path+"/keys.txt" f = open(txt,"w") for key in r.scan_iter(match = match,count = count): # f.write("%s %s" % (key,"\n")) f.write(key+"\n") total = total+1 f.close print "匹配: %s 的数量为:%d " % (match,total)
관련 권장 사항:
redis를 사용하는 PHP 캐시 인스턴스
위 내용은 Redis는 특정 접두사의 주요 스크립트 인스턴스를 얻습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!