Maison > Article > développement back-end > Redis obtient l'instance de script clé d'un certain préfixe
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"
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)
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!