Maison  >  Article  >  base de données  >  Explication détaillée de la traversée des clés Redis et de la gestion de la base de données

Explication détaillée de la traversée des clés Redis et de la gestion de la base de données

WBOY
WBOYavant
2022-10-10 17:23:481560parcourir

Cet article vous apporte des connaissances pertinentes sur Redis, qui présente principalement le contenu pertinent sur les clés de parcours et la gestion des bases de données. J'espère qu'il sera utile à tout le monde.

Explication détaillée de la traversée des clés Redis et de la gestion de la base de données

Apprentissage recommandé : Tutoriel vidéo Redis

1 Touches de parcours

1.1 Touches de parcours complet

Parfois, nous devons parcourir complètement toutes les touches, nous devons alors utiliser la commande de modèle de touches, et cette commande prend en charge la correspondance de modèles

127.0.0.1:6379> mset name luke neme josh
OK

Si vous souhaitez parcourir toutes les touches, vous pouvez utiliser les touches de commande *

127.0.0.1:6379> keys *
1) "name"
2) "neme"

le motif utilise des caractères génériques de style global, où :

  • * représente n'importe quel caractère

  •  ? Représente un caractère

  • [] représente une partie correspondante des caractères, par exemple, [a,b] représente la correspondance de deux caractères a et b, [1-10] représente la correspondance de n'importe quel nombre de 1 à 10

  • x représente escape , lorsque vous devez faire correspondre le caractère *, vous devez vous échapper

Nous pouvons faire les opérations suivantes :

127.0.0.1:6379> keys n[a,e]me
1) "name"
2) "neme"

Vous pouvez aussi faire cela

127.0.0.1:6379> keys n?me
1) "name"
2) "neme"

Mais quand il y a un grand nombre de clés dans le redis base de données, les clés bloqueront redis.

Que devons-nous faire si nous devons parcourir des clés ?

Généralement, notre environnement de production est multi-nœuds, nous pouvons alors trouver un nœud esclave Redis qui ne fournit pas de services externes pour parcourir les données, mais si la quantité de données est importante, il bloquera toujours Redis, mais pour le nœud esclave , cela n'affecte que la copie maître et esclave.

Si vous êtes sûr qu'il n'y a pas beaucoup de clés sur redis, vous pouvez l'exécuter directement.

1.2 Parcours progressif

Le parcours progressif consiste à parcourir une partie de la clé à chaque fois, puis à revenir et à continuer à parcourir les données suivantes la prochaine fois. De cette façon, toutes les données peuvent être parcourues sans bloquer le service Redis.

scan cursor [MATCH pattern] [COUNT count]

Les paramètres sont expliqués comme suit :

  • cursor est un paramètre obligatoire. C'est un curseur, indiquant où a été le parcours. La prochaine fois qu'il démarrera à partir de ce curseur, si 0 est renvoyé, cela signifie le. le parcours est terminé.

  • Le modèle MATCH est un paramètre facultatif, qui est le même que le modèle des touches

  • Le nombre COUNT signifie parcourir plusieurs touches, la valeur par défaut est 10, il peut être augmenté en fonction de la situation réelle

127.0.0.1:6379> mset a 1 b 1 c 1 d 1 e 1 f 1 g 1 h 1 i 1 g 1 k 1 l 1 m 1 n 1 o 1 p 1 q 1 r 1 s 1 t 1 u 1 v 1 w 1 x 1 y 1 z 1
OK

Nous utilisons scan Traversal, la première exécution renvoie ce qui suit :

127.0.0.1:6379> scan 0
1) "1"
2)  1) "l"
    2) "f"
    3) "k"
    4) "y"
    5) "c"
    6) "e"
    7) "w"
    8) "d"
    9) "b"
   10) "o"
   11) "q"

La deuxième fois est utilisée pour parcourir en utilisant le 1 renvoyé par la première fois, et 10 clés peuvent être parcourues

127.0.0.1:6379> scan 1
1) "23"
2)  1) "v"
    2) "u"
    3) "z"
    4) "g"
    5) "n"
    6) "s"
    7) "i"
    8) "a"
    9) "r"
   10) "t"

La troisième fois est utilisée pour parcourir en utilisant le 23 renvoyé la deuxième fois, lors du retour Quand il vaut 0, cela signifie que le parcours est terminé

127.0.0.1:6379> scan 23
1) "0"
2) 1) "x"
   2) "h"
   3) "m"
   4) "p"

Il existe également hscan pour le type de hachage, sscan pour le type d'ensemble et zscan pour l'ensemble ordonné. La méthode d'utilisation est la même que scan.

2 Gestion de base de données

redis dispose également de plusieurs commandes pour les opérations de base de données : dbsize, select, flushdb/flushall

2.1 Changer de base de données, select

select dbIndexdbIndex est le numéro de série de la base de données correspondant, il y a 16 bases de données dans la configuration par défaut de redis , sélectionnez le numéro pour basculer vers la base de données.

Par exemple, définissez une clé dans la base de données par défaut n°0

127.0.0.1:6379> set name luke
OK

Ensuite, nous passons à la base de données n°1 pour obtenir la clé, mais elle ne peut pas être obtenue, indiquant que les bases de données d'un service redis ne sont pas interopérables.

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
(nil)

Alors, peut-il être utilisé comme plusieurs Redis, bien sûr que non ? Bien qu'il existe davantage de bibliothèques, puisque redis est monothread, il s'agit en fait toujours d'un processeur. Si une commande dans une base de données est exécutée très lentement, d'autres bibliothèques seront également affectées. Par conséquent, dans ce cas, si elle est bloquée par d'autres. bibliothèques, Pour les développeurs utilisant une certaine bibliothèque, il peut être difficile d'analyser quel est le problème.

2.2 flushall/flushdb

La différence entre flushall et flushdb est que flushall effacera toutes les données de toutes les bibliothèques, tandis que flushdb effacera uniquement la base de données actuelle.

C'est facile à comprendre, nous ne donnerons donc pas d'exemples. Cependant, il convient de noter que ces deux commandes effaceront toutes les données et que les conséquences d'une mauvaise opération seront désastreuses. Et lorsqu'il y a trop de clés, redis sera également bloqué, vous devez donc être prudent lorsque vous utilisez ces deux commandes.

Apprentissage recommandé : Tutoriel vidéo 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer