Redis obtient l'instance de script clé d'un certain préfixe

不言
Libérer: 2018-05-18 15:28:26
original
4178 Les gens l'ont consulté

Cet article vous présente principalement les informations pertinentes sur le script de clé pour Redis pour obtenir un certain préfixe. L'article le présente en détail à travers l'exemple de code. Il a une certaine valeur d'apprentissage de référence pour que tout le monde puisse apprendre ou utiliser Redis. qui en a besoin Apprenons avec l'éditeur ci-dessous.

1.Contexte

Dans la maintenance quotidienne, nous rencontrons souvent le besoin de compter le nombre de clés avec un certain préfixe. Dans Redis avec de nombreuses requêtes, les clés * provoqueront directement le blocage.
Vous pouvez utiliser l'analyse pour une itération incrémentielle et interroger à l'aide d'un pipeline pour réduire les interactions et améliorer l'efficacité.

2. Avantages et inconvénients de la commande scan

Les commandes SCAN incluent SCAN, SSCAN, HSCAN et ZSCAN.

SCAN consiste à parcourir toutes les touches

Pour les autres commandes SCAN, c'est l'ensemble sélectionné par SCAN.

La commande SCAN est une boucle incrémentielle, et chaque appel ne renverra qu'une petite partie des éléments. Il n'y aura donc aucun piège avec la commande KEYS.

La commande SCAN renvoie un curseur qui commence à parcourir à partir de 0 et se termine à 0.

scan 0
1) "655"
2) 1) "test1"
  2) "test2"
Copier après la connexion

La valeur de retour est un tableau, l'une est le curseurId du cycle suivant et l'autre est le tableau d'éléments. La commande SCAN ne garantit pas que les valeurs renvoyées à chaque fois soient correctes. De plus, la même clé peut être renvoyée plusieurs fois sans distinction, ce qui nécessite un traitement applicatif.

De plus, la commande SCAN peut spécifier COUNT, qui est par défaut 10. Mais cela ne signifie pas combien d'articles seront retournés en le spécifiant. Ceci n'est qu'un rappel, et rien ne garantit qu'autant d'articles seront retournés.

Avantages :

  • Fournit une opération de traversée de l'espace clé, prend en charge le curseur, la complexité O(1), l'ensemble de la traversée n'en a besoin que d'un seul pass Nécessite O(N);

  • fournit une correspondance de modèle de résultat

  • prend en charge la définition du nombre de données renvoyées à la fois, mais c'est le cas. juste un indice, il y en aura plus

  • État faible, tous les états exigent seulement que le client maintienne un curseur

Inconvénients :

  • ne peut pas fournir une traversée complète d'instantanés, c'est-à-dire que s'il y a des modifications de données au milieu, certaines données impliquées dans les modifications peuvent ne pas être parcouru ;

  • Le nombre de données renvoyées à chaque fois n'est pas nécessairement certain, et il dépend extrêmement de l'implémentation interne

  • Le les données renvoyées peuvent être répétées et la couche application doit être capable de gérer la logique de réentrance

3. 🎜>Il existe une fonction encapsulée scan_iter en python--afficher tous les éléments- -Itérateur

Contenu du script :

#!/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)
Copier après la connexion

Recommandations associées :

Utilisation de PHP Instance de cache de redis

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal