Maison  >  Article  >  base de données  >  Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

WBOY
WBOYavant
2022-11-07 17:15:501922parcourir

Cet article vous apporte des connaissances pertinentes sur Redis, qui présente principalement du contenu connexe sur les structures de données courantes. Il y en a cinq les plus couramment utilisées, à savoir la chaîne, le hachage, la liste, l'ensemble et l'ordre. j'espère que cela sera utile à tout le monde.

Structures de données couramment utilisées dans Redis (organisées et partagées)

Apprentissage recommandé : Tutoriel vidéo Redis

Structures de données communes Redis

Redis nous permet d'accéder aux données dans Redis. Il en existe 5 les plus couramment utilisées, String, Hash, list, set,. ensemble ordonné (ZSET).

String

Le type chaîne est la structure de données la plus basique de Redis. Tout d'abord, les clés sont toutes de type chaîne et plusieurs autres structures de données sont construites sur la base du type chaîne, de sorte que le type chaîne peut jeter les bases de l'apprentissage des quatre autres structures de données. La valeur du type chaîne peut en fait être une chaîne (chaîne simple, chaîne complexe (telle que JSON, XML)), un nombre (entier, nombre à virgule flottante) ou même binaire (image, audio, vidéo), mais la valeur est le plus grand ne peut pas dépasser 512 Mo.

(Bien que Redis soit écrit en C et qu'il existe des chaînes en C qui sont , mais pour diverses considérations, Redis implémente toujours le type de chaîne lui-même)

Commande d'opération

set Set value

set key valueStructures de données couramment utilisées dans Redis (organisées et partagées)

La commande set a plusieurs options :

ex seconds : définit le délai d'expiration de deuxième niveau pour la clé.

px millisecondes : définissez le délai d'expiration en millisecondes de la clé.

nx : La clé ne doit pas exister avant de pouvoir être définie et utilisée avec succès pour l'ajout (couramment utilisée pour les verrous distribués).

xx : Contrairement à nx, la clé doit exister avant de pouvoir être définie avec succès et utilisée pour la mise à jour.

Structures de données couramment utilisées dans Redis (organisées et partagées)

Du point de vue de l'effet d'exécution, le paramètre ex est fondamentalement le même que la commande expire. Une autre chose qui nécessite une attention particulière est que si une chaîne a un délai d'expiration défini et que vous appelez ensuite la méthode set pour la modifier, son délai d'expiration disparaîtra.

Les effets d'exécution de nx et xx sont les suivants

Structures de données couramment utilisées dans Redis (organisées et partagées)

En plus de l'option set, Redis fournit également les commandes setex et setnx :

setex key seconds value

setnx key value

setex et setnx ont la même fonction que les options ex et nx. Autrement dit, setex définit le délai d'expiration de deuxième niveau pour la clé. La clé ne doit pas exister lorsque setnx est défini avant de pouvoir être définie avec succès.

Exemple setex :

Structures de données couramment utilisées dans Redis (organisées et partagées)

Exemple setnx :

Structures de données couramment utilisées dans Redis (organisées et partagées)

Parce que la clé foo-ex existe déjà, setnx échoue et le résultat renvoyé est 0. La clé foo-ex2 n'existe pas, donc setnx réussit et le le résultat de retour est 1 .

Existe-t-il des scénarios d'application ? Prenons l'exemple de la commande setnx. En raison du mécanisme de traitement des commandes à thread unique de Redis, si plusieurs clients exécutent la valeur de la clé setnx en même temps, un seul client peut la définir avec succès en fonction de la valeur de la clé setnx. Les caractéristiques de setnx peuvent être utilisées comme solution d'implémentation pour les verrous distribués. Bien sûr, le verrouillage distribué ne nécessite pas une seule commande. Nous utiliserons plus tard un chapitre séparé pour décrire le verrouillage distribué basé sur Redis.

get Obtenez la valeur

Si la clé à obtenir n'existe pas, renvoyez nil (vide):

Structures de données couramment utilisées dans Redis (organisées et partagées)

mset Définissez la valeur par lots

Définissez 4 paires clé-valeur à la fois via la commande mset

Structures de données couramment utilisées dans Redis (organisées et partagées)

mget obtient les valeurs par lots

Structures de données couramment utilisées dans Redis (organisées et partagées)

obtient les valeurs​​des clés a, b, c, d par lots :

Si certaines clés n'existent pas , alors leurs valeurs​​sont nulles (vides) et le résultat est tel que transmis dans L'ordre dans lequel les clés sont saisies est renvoyé.

Les commandes d'opération par lots peuvent améliorer efficacement l'efficacité. S'il n'y a pas de commande comme mget, le temps spécifique requis pour exécuter n commandes get est le suivant :

n get times = n times réseau + n times de commande

Après avoir utilisé mget. command , le temps spécifique requis pour exécuter n opérations de commande get est le suivant :

n get time = 1 temps réseau + n temps de commande

Redis peut prendre en charge des dizaines de milliers d'opérations de lecture et d'écriture par seconde, mais cela fait référence à la capacité de traitement du serveur Redis, en plus du temps de commande, une commande a également du temps réseau. est de 1 milliseconde, le temps de commande est de 0,1 milliseconde (sur la base du traitement de 10 000 commandes par seconde), puis il faut 1,1 seconde pour exécuter 1 000 commandes get (1 0001+1 0000,1 = 1 100 ms) et 0,101 seconde pour 1 commande mget ( 11+1000 0,1=101ms).

Opération Incr Number

La commande incr est utilisée pour incrémenter la valeur. Les résultats renvoyés sont divisés en trois situations :

La valeur n'est pas un entier et une erreur est renvoyée.

La valeur est un entier et le résultat après incrémentation est renvoyé. La clé

n'existe pas. Elle sera incrémentée selon la valeur de 0 et le résultat renvoyé sera 1.

Structures de données couramment utilisées dans Redis (organisées et partagées)

En plus de la commande incr, Redis fournit decr (décrémentation automatique), incrby (incrémentation automatique jusqu'à un nombre spécifié), decrby (décrémentation automatique jusqu'à un nombre spécifié) et incrbyfloat (incrémentation automatique de un nombre à virgule flottante). Veuillez essayer les effets spécifiques par vous-même.

append append command

append peut ajouter une valeur à la fin de la chaîne

Structures de données couramment utilisées dans Redis (organisées et partagées)

strlen string length

renvoie la longueur de la chaîne

Structures de données couramment utilisées dans Redis (organisées et partagées)

Remarque : chaque caractère chinois occupe 3 octets

getset définit et renvoie la valeur d'origine

getset définit la valeur tout comme set, mais la différence est qu'il renvoie également la valeur d'origine de la clé

Structures de données couramment utilisées dans Redis (organisées et partagées)

setrange définit le caractère à la position spécifiée

Structures de données couramment utilisées dans Redis (organisées et partagées)

Les indices commencent à 0.

getrange intercepte une chaîne

getrange intercepte une partie de la chaîne pour former une sous-chaîne Vous devez spécifier les décalages de début et de fin. La plage interceptée est un intervalle fermé.

Structures de données couramment utilisées dans Redis (organisées et partagées)

Complexité temporelle des commandes

String Parmi ces commandes, à l'exception de del, mset et mget qui prennent en charge les opérations par lots de plusieurs clés, la complexité temporelle est liée au nombre de clés, qui est O(n). getrange est lié à la longueur de la chaîne et est également O(n). Le reste des commandes a essentiellement une complexité temporelle de O(1), ce qui est toujours très rapide.

Scénarios d'utilisation

Le type chaîne a un large éventail de scénarios d'utilisation :

Fonction Cache

Redis comme couche de cache, MySQL comme couche de stockage, la plupart des données demandées sont obtenues à partir de Redis. Étant donné que Redis a la particularité de prendre en charge une simultanéité élevée, la mise en cache peut généralement jouer un rôle dans l'accélération de la lecture et de l'écriture et dans la réduction de la pression back-end.

Comptage

En utilisant Redis comme outil de base pour le comptage, il peut réaliser les fonctions de comptage rapide et de mise en cache des requêtes, et les données peuvent être transférées de manière asynchrone vers d'autres sources de données.

Session partagée

Un service Web distribué enregistre les informations de session de l'utilisateur (telles que les informations de connexion de l'utilisateur) sur ses propres serveurs. Pour des raisons d'équilibrage de charge, le service distribué stockera les informations de session de l'utilisateur (. tels que les informations de connexion de l'utilisateur). L'accès est équilibré sur différents serveurs. Les utilisateurs qui actualisent l'accès peuvent constater qu'ils doivent se reconnecter. Ce problème est intolérable pour les utilisateurs.

Afin de résoudre ce problème, Redis peut être utilisé pour gérer de manière centralisée les sessions utilisateur. Dans ce mode, tant que Redis est hautement disponible et évolutif, chaque fois qu'un utilisateur met à jour ou interroge les informations de connexion, elles seront directement obtenues auprès de Redis. .

Limitation de vitesse

Par exemple, pour des raisons de sécurité, de nombreuses applications demanderont à l'utilisateur de saisir un code de vérification de téléphone portable à chaque fois qu'il se connectera pour déterminer s'il s'agit de l'utilisateur lui-même. Cependant, afin d'éviter que l'interface SMS ne soit consultée fréquemment, la fréquence à laquelle les utilisateurs obtiennent des codes de vérification par minute sera limitée, par exemple pas plus de 5 fois par minute. Certains sites Web empêchent qu'une adresse IP soit demandée plus de n fois par seconde, et une idée similaire peut être adoptée.

Hash

Java fournit HashMap, et Redis a également une structure de données similaire, qui est le type de hachage. Mais veuillez noter que la relation de mappage dans le type de hachage est appelée valeur de champ. Notez que la valeur ici fait référence à la valeur correspondant au champ, et non à la valeur correspondant à la clé.

Commandes d'opération

Fondamentalement, les commandes d'opération de hachage sont très similaires aux commandes d'opération de chaîne. De nombreuses commandes ajoutent la lettre h devant la commande de type de chaîne, ce qui signifie que le type de hachage doit être utilisé, et en même temps. temps, il faut préciser la valeur du champ sur lequel on va opérer.

valeur de réglage hset

utilisateur hset : 1 nom lijin

Structures de données couramment utilisées dans Redis (organisées et partagées)

Si le réglage réussit, il renverra 1, sinon il renverra 0. De plus, Redis fournit la commande hsetnx. Leur relation est la même que celle des commandes set et setnx, sauf que la portée change de clé en champ.

hget value

hget user:1 name

Si la clé ou le champ n'existe pas, nul sera renvoyé.

Structures de données couramment utilisées dans Redis (organisées et partagées)

hdel delete field

hdel supprimera un ou plusieurs champs, et le résultat renvoyé est le nombre de champs supprimés avec succès.

Structures de données couramment utilisées dans Redis (organisées et partagées)

hlen calcule le nombre de champs

Structures de données couramment utilisées dans Redis (organisées et partagées)

hmset définit la valeur par lots

Structures de données couramment utilisées dans Redis (organisées et partagées)

hmget obtient la valeur par lots

Structures de données couramment utilisées dans Redis (organisées et partagées)

hexists détermine si le champ existe

Structures de données couramment utilisées dans Redis (organisées et partagées)

Si il existe, renvoie 1, s'il n'existe pas Renvoie 0

hkeys obtient tous les champs

Il renvoie tous les champs avec la clé de hachage spécifiée

Structures de données couramment utilisées dans Redis (organisées et partagées)

hvals obtient toutes les valeurs

Structures de données couramment utilisées dans Redis (organisées et partagées)

hgetall obtient tous les champs et valeurs

Structures de données couramment utilisées dans Redis (organisées et partagées)

Lors de l'utilisation de hgetall, si Si le nombre d'éléments de hachage est relativement grand, il existe une possibilité de bloquer Redis. Si vous n'avez besoin d'obtenir qu'une partie du champ, vous pouvez utiliser hmget. Si vous devez obtenir toutes les valeurs du champ, vous pouvez utiliser la commande hscan. Cette commande parcourra progressivement le type de hachage qui sera présenté dans un chapitre ultérieur. .

hincrby ajoute

hincrby et hincrbyfloat, tout comme les commandes incrby et incrbyfloat, mais leur portée est archivée.

hstrlen Calculer la longueur de chaîne de valeur

Structures de données couramment utilisées dans Redis (organisées et partagées)

La complexité temporelle de la commande

Dans les commandes d'opération de type hachage, la complexité temporelle de hdel, hmget, hmset est liée au nombre de champs dans la commande O( k ), hkeys, hgetall, hvals sont liés au nombre total de champs stockés, O(N). La complexité temporelle du reste des commandes est O(1).

Scénarios d'utilisation

Comme vous pouvez le voir d'après les opérations précédentes, les opérations de String et Hash sont très similaires, alors pourquoi avez-vous besoin de créer un hachage pour le stockage ?

Le type de hachage est plus adapté au stockage de données de type objet. Nous pouvons le comparer si l'utilisateur dans l'enregistrement de la table dans la base de données est :

id name age
1. lijin 18
2 msb 20

1. L'utilisation du type String

nécessite l'insertion et la récupération un par un.

set user:1:name lijin;

set user:1:age 18;

set user:2:name msb;

set user:2:age 20;

Avantages : simple et intuitif, chacun La clé correspond à une valeur

Inconvénients : trop de clés, occupant beaucoup de mémoire, les informations utilisateur sont trop dispersées, non utilisées en environnement de production

2. Sérialiser l'objet et le stocker dans redis

.

set user:1 serialize( userInfo);

Avantages : programmation simple, utilisation élevée de la mémoire si la sérialisation est utilisée

Inconvénients : la sérialisation et la désérialisation ont une certaine surcharge, lors de la mise à jour des attributs, toutes les informations utilisateur doivent être supprimées pour la désérialisation. Après la mise à jour, sérialisez sur redis

3. Utilisez le type de hachage

utilisateur hmset : 1 nom lijin âge 18

utilisateur hmset :2 nom msb âge 20

Avantages : simple et intuitif, utilisation raisonnable. peut réduire la consommation d'espace mémoire

Inconvénients : Pour contrôler le format d'encodage interne, les formats inappropriés consommeront plus de mémoire

Liste (liste)

Le type liste (liste) est utilisé pour stocker plusieurs chaînes ordonnées, un Les quatre les éléments , b, c, c et b forment une liste ordonnée de gauche à droite. Chaque chaîne de la liste est appelée un élément. Une liste peut stocker jusqu'à (2 ^ 32-1) élément (4294967295).

Structures de données couramment utilisées dans Redis (organisées et partagées)

Dans Redis, vous pouvez insérer (push) et pop (pop) les deux extrémités de la liste, vous pouvez également obtenir une liste d'éléments dans une plage spécifiée, obtenir des éléments avec un indice d'index spécifié, etc. List est une structure de données relativement flexible qui peut agir comme une pile et une file d'attente et comporte de nombreux scénarios d'application en développement réel.

Le type de liste a deux caractéristiques :

Premièrement, les éléments de la liste sont ordonnés, ce qui signifie qu'un élément ou une liste d'éléments dans une certaine plage peut être obtenu via l'indice d'index.

Deuxièmement, les éléments de la liste peuvent être répétés.

Commande d'opération

lrange Obtient une liste d'éléments dans la plage spécifiée (les éléments ne seront pas supprimés)

clé début fin

Caractéristiques de l'indice d'index : 0 à N-1 de gauche à droite

commande lrange 0 -1 peut Récupérer tous les éléments de la liste de gauche à droite

rpush Insérer vers la droite

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

lpush Insérer vers la gauche

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

linsert Insérer un nouvel élément avant ou après un élément

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

Ces trois résultats renvoyés correspondent à la longueur de la liste actuelle une fois la commande terminée, qui correspond au nombre d'éléments contenus dans la liste en même temps, rpush et lpush prennent en charge l'insertion de plusieurs. éléments en même temps.

lpop apparaît du côté gauche de la liste (les éléments seront supprimés)

Structures de données couramment utilisées dans Redis (organisées et partagées)r

Veuillez noter que les éléments disparaîtront après leur apparition.

rpop Pop depuis le côté droit de la liste

rpop fera apparaître l'élément d à l'extrême droite de la liste.

Structures de données couramment utilisées dans Redis (organisées et partagées)

lrem Supprimer l'élément spécifié

Structures de données couramment utilisées dans Redis (organisées et partagées)

La commande lrem trouvera l'élément égal à la valeur de la liste et le supprimera. Il est divisé en trois situations selon le nombre :

count>0, de gauche à droite. à droite, supprimez au maximum les éléments.

count

count=0, supprimez tout.

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

La valeur de retour est le nombre d'éléments réellement supprimés.

ltirm coupe la liste en fonction de la plage d'index

Par exemple, si vous souhaitez conserver le 0ème au 1er élément de la liste

Structures de données couramment utilisées dans Redis (organisées et partagées)ls

lset modifie l'élément avec l'indice d'index spécifié

Structures de données couramment utilisées dans Redis (organisées et partagées)

lindex obtient l'élément avec l'indice d'index spécifié de la liste

Structures de données couramment utilisées dans Redis (organisées et partagées)l

llen Obtenez la longueur de la liste

Structures de données couramment utilisées dans Redis (organisées et partagées)

les éléments contextuels bloquants blpop et brpop

blpop et brpop bloquent les versions de lpop et rpop en plus. , ils prennent également en charge plusieurs types de listes et prennent également en charge la définition du temps de blocage, en secondes. Si le temps de blocage est 0, cela signifie qu'il continuera à être bloqué. Prenons brpop comme exemple.

Structures de données couramment utilisées dans Redis (organisées et partagées)

Un client est bloqué (car il le sera s'il n'y a aucun élément)

Structures de données couramment utilisées dans Redis (organisées et partagées)

Un client est toujours bloqué. À ce stade, nous exécutons

Structures de données couramment utilisées dans Redis (organisées et partagées)

A à partir d'un autre client B et produisons

Structures de données couramment utilisées dans Redis (organisées et partagées)

Remarque : s'il y a plusieurs clés après brpop, alors brpop parcourra les clés de gauche à droite. Une fois qu'il y a une clé, Pop l'élément et le client revient immédiatement.

Scénarios d'utilisation

Le type de liste peut être utilisé par exemple :

File d'attente de messages, la combinaison de commandes Redis lpush+brpop peut réaliser la file d'attente de blocage, le client producteur utilise lrpush pour insérer des éléments du côté gauche de la liste, plusieurs clients consommateurs En utilisant la commande brpop pour "saisir" les éléments en fin de liste de manière bloquante, plusieurs clients assurent l'équilibrage de charge et la haute disponibilité de la consommation.

Liste d'articles

Chaque utilisateur a sa propre liste d'articles, et maintenant la liste d'articles doit être affichée en pages. À l'heure actuelle, vous pouvez envisager d'utiliser une liste, car la liste est non seulement ordonnée, mais prend également en charge l'obtention d'éléments en fonction de la plage d'index.

Implémenter d'autres structures de données

lpush+lpop =Stack (pile)

lpush +rpop =Queue (file d'attente)

lpsh+ ltrim =Capped Collection (collection limitée)

lpush+brpop=Message Queue (file d'attente de messages)

Set

Structures de données couramment utilisées dans Redis (organisées et partagées)

Le type set est également utilisé pour enregistrer plusieurs éléments de chaîne, mais contrairement au type liste, les éléments en double ne sont pas autorisés dans l'ensemble et les éléments de l'ensemble ne sont aucun. Dans l'ordre, les éléments ne peuvent pas être obtenus via indices d'indexation.

Une collection peut stocker jusqu'à 2 puissance 32 - 1 élément. En plus de prendre en charge l'ajout, la suppression, la modification et les requêtes au sein d'une collection, Redis prend également en charge les ensembles d'intersection, d'union et de différence de plusieurs collections. Une utilisation appropriée des types de collection peut résoudre de nombreux problèmes pratiques dans le développement réel.

Commande d'opération intégrée

sadd Ajouter un élément

permet d'ajouter plusieurs éléments, le résultat de retour est le nombre d'éléments ajoutés avec succès

Structures de données couramment utilisées dans Redis (organisées et partagées)

srem Supprimer des éléments

permet la suppression de plusieurs éléments, le résultat de retour est le nombre d'éléments supprimés avec succès

Structures de données couramment utilisées dans Redis (organisées et partagées)

scard Calculer le nombre d'éléments

Structures de données couramment utilisées dans Redis (organisées et partagées)

sismember Déterminer si l'élément est dans l'ensemble

Si l'élément élément donné est dans l'ensemble, renvoie 1, sinon renvoie 0

Structures de données couramment utilisées dans Redis (organisées et partagées)

srandmember Renvoie aléatoirement l'individu spécifié à partir de l'élément Count défini

Spécifiez le nombre S'il n'est pas écrit, la valeur par défaut est 1

Structures de données couramment utilisées dans Redis (organisées et partagées)

.
spop extrait aléatoirement les éléments de la collection

Vous pouvez également spécifier le numéro. S'il n'est pas spécifié, la valeur par défaut est 1. Notez que comme il s'agit d'un popping, une fois la commande spop exécutée, les éléments seront supprimés de la collection, mais srandmember ne le fera pas.

Structures de données couramment utilisées dans Redis (organisées et partagées)

smembers Obtenez tous les éléments (aucun élément n'apparaîtra)

Le résultat renvoyé n'est pas ordonné

Structures de données couramment utilisées dans Redis (organisées et partagées)

Commande d'opération inter-ensembles

Maintenant, il y a deux ensembles, ils sont set1 et set2

Structures de données couramment utilisées dans Redis (organisées et partagées)

sinter Trouve l'intersection de plusieurs ensembles

Structures de données couramment utilisées dans Redis (organisées et partagées)

suinon Trouve l'union de plusieurs ensembles

Structures de données couramment utilisées dans Redis (organisées et partagées)

sdiff Trouve la différence de plusieurs ensembles

Structures de données couramment utilisées dans Redis (organisées et partagées)

Enregistre les résultats de l'intersection, de l'union et de la différence
sinterstore destination key [key ...]
suionstore destination key [key ...]
sdiffstore destination key [key ...]复制代码

Les opérations entre les ensembles prendront plus de temps lorsqu'il y a de nombreux éléments, donc Redis fournit les trois commandes ci-dessus (commande d'origine + magasin) pour enregistrer les résultats de l'intersection, de l'union et de la différence entre les ensembles dans la clé de destination, par exemple :

Structures de données couramment utilisées dans Redis (organisées et partagées)

Scénarios d'utilisation

Un scénario d'utilisation typique pour les types de collections est celui des balises. Par exemple, un utilisateur peut être intéressé par le divertissement et le sport, tandis qu'un autre utilisateur peut être intéressé par l'histoire et l'actualité. Ces points d'intérêt sont des tags. Avec ces données, vous pouvez obtenir les personnes qui aiment la même balise et les balises que les utilisateurs aiment en commun. Ces données sont importantes pour l'expérience utilisateur et pour améliorer la fidélité de l'utilisateur.

Par exemple, un site de commerce électronique fera différents types de recommandations pour les utilisateurs avec des labels différents. Par exemple, pour les personnes plus intéressées par les produits numériques, les derniers produits numériques leur seront recommandés sur différentes pages ou via des e-mails. , généralement pour le site Web, apporte plus d'avantages.

De plus, les collections peuvent également générer des nombres aléatoires pour des activités telles que les activités de loterie, les graphiques sociaux, etc.

Ensembles ordonnés (ZSET)

Structures de données couramment utilisées dans Redis (organisées et partagées)

Les ensembles ordonnés sont un peu inconnus par rapport aux hachages, aux listes et aux ensembles, mais comme ils sont appelés ensembles ordonnés, ils doivent être liés à des ensembles et ils conservent Les ensembles ne peuvent pas avoir de membres en double , mais la différence est que les éléments d'un ensemble ordonné peuvent être triés. Mais contrairement à la liste qui utilise les indices d’index comme base de tri, elle définit un score pour chaque élément comme base de tri.

Les éléments de l'ensemble commandé ne peuvent pas être répétés, mais le score peut être répété, tout comme le nombre d'élèves des camarades de classe de la même classe ne peut pas être répété, mais les résultats des tests peuvent être les mêmes.

Les ensembles ordonnés fournissent des fonctions telles que l'obtention de scores spécifiés et de requêtes de plage d'éléments, le calcul du classement des membres, etc. Une utilisation appropriée des ensembles ordonnés peut nous aider à résoudre de nombreux problèmes dans le développement réel.

Commande d'opération intégrée

zadd ajoute des membres

Structures de données couramment utilisées dans Redis (organisées et partagées)

Le résultat renvoyé représente le nombre de membres ajoutés avec succès

Veuillez noter :

Structures de données couramment utilisées dans Redis (organisées et partagées)

La commande zadd a également quatre options nx, xx, ch, incr quatre options

nx : le membre ne doit pas exister avant de pouvoir être défini avec succès pour l'ajout.

xx : le membre doit exister avant de pouvoir être défini avec succès et utilisé pour les mises à jour.

ch : Renvoie le nombre d'éléments et de scores de l'ensemble ordonné qui ont changé après cette opération

incr : Augmente le score, ce qui est équivalent au zincrby

Calcul zcard introduit plus tard

Structures de données couramment utilisées dans Redis (organisées et partagées)

Calcul zscore Le score d'un membre

Structures de données couramment utilisées dans Redis (organisées et partagées)

Si le membre n'existe pas, retournez nul

zrank calcule le classement du membre

Structures de données couramment utilisées dans Redis (organisées et partagées)

zrank是从分数从低到高返回排名

zrevrank反之

很明显,排名从0开始计算。

zrem 删除成员

Structures de données couramment utilisées dans Redis (organisées et partagées)

允许一次删除多个成员。

返回结果为成功删除的个数。

zincrby 增加成员的分数

Structures de données couramment utilisées dans Redis (organisées et partagées)

zrange和zrevrange返回指定排名范围的成员

有序集合是按照分值排名的,zrange是从低到高返回,zrevrange反之。如果加上 withscores选项,同时会返回成员的分数

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

zrangebyscore返回指定分数范围的成员
zrangebyscore key min max [withscores] [limit offset count]
zrevrangebyscore key max min [withscores][limit offset count]复制代码

其中zrangebyscore按照分数从低到高返回,zrevrangebyscore反之。例如下面操作从低到高返回200到221分的成员,withscores选项会同时返回每个成员的分数。

同时min和max还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大:

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

zcount 返回指定分数范围成员个数

zcount key min max

Structures de données couramment utilisées dans Redis (organisées et partagées)

zremrangebyrank 按升序删除指定排名内的元素

zremrangebyrank key start end

zremrangebyscore 删除指定分数范围的成员

zremrangebyscore key min max

集合间操作命令

zinterstore 交集

zinterstoreStructures de données couramment utilisées dans Redis (organisées et partagées)

这个命令参数较多,下面分别进行说明

destination:交集计算结果保存到这个键。

numkeys:需要做交集计算键的个数。

key [key ...]:需要做交集计算的键。

weights weight [weight ...]:每个键的权重,在做交集计算时,每个键中的每个member 会将自己分数乘以这个权重,每个键的权重默认是1。

aggregate sum/ min |max:计算成员交集后,分值可以按照sum(和)、min(最小值)、max(最大值)做汇总,默认值是sum。

不太好理解,我们用一个例子来说明。(算平均分)

Structures de données couramment utilisées dans Redis (organisées et partagées)

Structures de données couramment utilisées dans Redis (organisées et partagées)

zunionstore 并集

该命令的所有参数和zinterstore是一致的,只不过是做并集计算,大家可以自行实验。

使用场景

有序集合比较典型的使用场景就是排行榜系统。例如视频网站需要对用户上传的视频做排行榜,榜单的维度可能是多个方面的:按照时间、按照播放数量、按照获得的赞数。

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情

推荐学习: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