>  기사  >  백엔드 개발  >  Redis는 특정 접두사의 주요 스크립트 인스턴스를 얻습니다.

Redis는 특정 접두사의 주요 스크립트 인스턴스를 얻습니다.

不言
不言원래의
2018-05-18 15:28:264151검색

이 글에서는 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)만 필요

  • 결과 패턴 일치 제공; 한 번에 반환되는 데이터 수를 설정하지만 이는 단지 힌트일 뿐이며 때로는 더 많은 데이터가 반환될 수도 있습니다.

  • 약한 상태, 모든 상태에서는 클라이언트가 커서만 유지해야 합니다.

  • 단점:

은 완전한 스냅샷 순회를 제공할 수 없습니다. 즉, 중간에 데이터 수정이 있는 경우 변경과 관련된 일부 데이터가 순회되지 않을 수 있습니다.

  • 매번 반환되는 데이터 수가 반드시 확실하지는 않습니다.

  • 반환된 데이터는 중복될 수 있으며 애플리케이션 계층은 재진입 논리를 처리할 수 있어야 합니다.

  • 3. Python 스크립트 구현. Python에는 캡슐화된 함수 scan_iter가 있습니다.--모든 요소 보기--서버 반복

  • 스크립트 내용:
#!/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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.