Maison développement back-end Tutoriel C#.Net Tutoriel Redis (6) : type de données Sorted-Sets

Tutoriel Redis (6) : type de données Sorted-Sets

Dec 28, 2016 pm 02:48 PM
redis

1. Présentation :

Les types Sorted-Sets et Sets sont très similaires. Ce sont tous deux des collections de chaînes et ne permettent pas aux membres en double d'apparaître dans un ensemble. La principale différence entre eux est que chaque membre des Sorted-Sets sera associé à un score, et Redis utilise le score pour trier les membres de l'ensemble de petit à grand. Cependant, il convient de noter que même si les membres des Sorted-Sets doivent être uniques, les scores peuvent être répétés.
L'ajout, la suppression ou la mise à jour d'un membre dans un Sorted-Set est une opération très rapide, et sa complexité temporelle est le logarithme du nombre de membres dans l'ensemble. Étant donné que les membres des Sorted-Sets sont ordonnés dans l'ensemble, même l'accès aux membres situés au milieu de l'ensemble est toujours très efficace. En fait, cette fonctionnalité de Redis est difficile à implémenter dans de nombreux autres types de bases de données. En d'autres termes, pour obtenir la même efficacité que Redis à ce stade, il est très difficile de la modéliser dans d'autres bases de données.

2. Liste des commandes associées :

T

Membre d'incrémentation ZINCRBYkey Renvoie la liste des membres dont l'index est. entre le démarrage et l'arrêt.
Prototype de commande Complexité temporelle Description de la commande Valeur de retour
Membre du score clé ZADD [score] [membre] O(log(N)) N en complexité temporelle représente le nombre de membres dans les ensembles triés. Ajoutez tous les membres spécifiés dans les paramètres et leurs scores au Sorted-Set de la clé spécifiée. Dans cette commande, nous pouvons spécifier plusieurs ensembles de scores/membres comme paramètres. Si un membre du paramètre existe déjà lors de son ajout, cette commande mettra à jour le score du membre avec la nouvelle valeur et réorganisera le membre en fonction de la nouvelle valeur. Si la clé n'existe pas, cette commande créera une nouvelle valeur d'ensembles triés pour la clé et y insérera la paire partition/membre. Si la clé existe déjà, mais que la valeur associée n'est pas de type Sorted-Sets, le message d'erreur correspondant sera renvoyé. Le nombre de membres réellement insérés dans cette opération.
Clé ZCARD O(1) Obtenir le nombre de membres contenus dans les ensembles triés associés à la clé. Renvoie le nombre de membres dans les ensembles triés. Si la clé n'existe pas, renvoie 0.
ZCOUNTkey min max O(log(N) M) N en complexité temporelle représente le nombre de membres dans les ensembles triés, M représente le nombre d'éléments entre min et max. Cette commande permet d'obtenir le nombre de membres dont le score est compris entre min et max. Une explication supplémentaire pour les paramètres min et max est que -inf et inf représentent respectivement les valeurs les plus élevées et les plus basses des scores dans les ensembles triés. Par défaut, la plage représentée par min et max est une plage d'intervalles fermés, c'est-à-dire que les membres compris dans min <= score <= max seront renvoyés. Cependant, nous pouvons représenter un intervalle ouvert en ajoutant le caractère "(" devant min et max, tel que (min max représente min < score <= max, et (min (max représente min < score < max . Le nombre de membres dans la plage de fractions spécifiée
O(log(N)) Complexité temporelle moyenne. N représente le nombre de membres dans les ensembles triés. Cette commande augmentera le score spécifié pour le membre spécifié dans la clé spécifiée. Si le membre n'existe pas, la commande ajoutera le membre et supposera que son score initial est de 0, et puis augmentez son score. Ajoutez un incrément. Si la clé n'existe pas, cette commande créera la clé et ses ensembles triés associés, et contiendra les membres spécifiés par le paramètre, dont les scores sont liés au paramètre d'incrément. être renvoyé Le nouveau score sous forme de chaîne.) M) Le N dans la complexité temporelle représente le nombre de membres dans l'ensemble trié, et M représente le nombre de membres renvoyés. Cette commande renvoie les membres dont l'ordre se situe dans la plage spécifiée par les paramètres start et stop, où start et stop sont tous basés sur 0, c'est-à-dire que 0 représente le premier membre et -1 représente le dernier membre si start est. supérieur à la valeur d'index maximale dans l'ensemble trié, ou start > stop, un ensemble vide sera renvoyé Si stop est supérieur à la valeur d'index maximale, la commande renverra le dernier membre de l'ensemble depuis le début. La commande a le paramètre facultatif WITHSCORES, la commande inclura la valeur de score de chaque membre dans le résultat renvoyé, tel que value1 ,score1,value2,score2...  
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] O(log(N) M) N en complexité temporelle Représente le nombre de membres dans l'ensemble trié, et M représente le nombre de membres renvoyés. Cette commande renverra tous les membres avec des scores compris entre min et max, c'est-à-dire les membres qui satisfont à l'expression min <= score <= max, où les membres renvoyés sont renvoyés dans l'ordre de leurs scores de bas en haut si le. membre a Si les scores sont les mêmes, les membres sont retournés par ordre lexicographique. Le paramètre facultatif LIMIT est utilisé pour limiter le nombre de membres renvoyés. Le paramètre facultatif offset signifie revenir à partir du membre offset-ième qui remplit les conditions et renvoyer le nombre de membres en même temps. La signification du paramètre optionnel WITHSCORES fait référence à la description de cette option dans ZRANGE. La dernière chose à expliquer est que les règles pour min et max dans les paramètres peuvent être référées à la commande ZCOUNT. Renvoie une liste de membres dont les scores se situent dans la plage spécifiée.
Membre clé ZRANK O(log(N)) Le N dans la complexité temporelle représente le nombre de membres dans l'ensemble trié . Les membres du Sorted-Set sont stockés dans l'ordre des scores les plus faibles aux plus élevés. Cette commande renverra la valeur de position du membre spécifié dans le paramètre, où 0 représente le premier membre, qui est le membre avec le score le plus bas dans le Sorted-Set. -Ensemble. Si le membre existe, renvoie sa valeur d'index de position. Sinon, retournez zéro.
Membre clé ZREM [membre ...] O(M log(N)) N en complexité temporelle représente l'ensemble trié. le nombre de membres en M représente le nombre de membres supprimés. Cette commande supprimera les membres spécifiés dans les paramètres et les membres qui n'existent pas seront ignorés. Si la valeur associée à la clé n'est pas un ensemble trié, le message d'erreur correspondant sera renvoyé. Le nombre réel de membres supprimés.
La clé ZREVRANGE démarrearrêt[WITHSCORES] O(log(N) M) N en complexité temporelle représente les membres de Sorted-Set Le nombre, M représente le nombre de membres renvoyés. La fonction de cette commande est fondamentalement la même que celle de ZRANGE. La seule différence est que cette commande obtient les membres à la position spécifiée par tri inverse, c'est-à-dire de l'ordre élevé à l'ordre inférieur. Si les membres ont le même score, ils sont triés par ordre lexicographique décroissant. Renvoie la liste des membres spécifiée.
Membre ZREVRANKkey O(log(N)) Le N dans la complexité temporelle représente le nombre de membres dans l'ensemble trié. La fonction de cette commande est fondamentalement la même que celle de ZRANK. La seule différence est que l'index obtenu par cette commande est la position après tri de haut en bas. De même, 0 représente le premier élément, c'est-à-dire le membre avec le score le plus élevé. . Si le membre existe, renvoie sa valeur d'index de position. Sinon, retournez zéro.
Membre ZSCOREkey O(1) Obtenir le score du membre spécifié de la clé spécifiée Si le membre existe, to renvoie son score sous forme de chaîne, sinon renvoie nul.
ZREVRANGEBYSCOREkey max min [WITHSCORES] [LIMIT offset count] O(log(N) M) N représentation en complexité temporelle Le nombre de membres dans le Sorted-Set, M représente le nombre de membres renvoyés. Sauf que la méthode de tri de cette commande est basée sur le tri des scores de haut en bas, les autres fonctions et significations des paramètres sont les mêmes que ZRANGEBYSCORE. Renvoie une liste de membres dont les scores se situent dans la plage spécifiée.
ZREMRANGEBYRANKkey start stop O(log(N) M) N en complexité temporelle représente le nombre de membres dans Sorted-Set, M représente le nombre de membres supprimés. Supprimez le membre dont la position d'index se situe entre start et stop. Start et stop sont tous deux basés sur 0, c'est-à-dire que 0 représente le membre avec le score le plus bas et -1 représente le dernier membre, qui est le membre avec le score le plus élevé. Le nombre de membres supprimés.
ZREMRANGEBYSCOREkey min max O(log(N) M) N en complexité temporelle représente le nombre de membres dans Sorted-Set, M représente le nombre de membres supprimés. Supprimez tous les membres dont les scores sont compris entre min et max, c'est-à-dire tous les membres qui satisfont à l'expression min <= score <= max. Pour les paramètres min et max, ils peuvent être exprimés en intervalles ouverts. Pour des règles spécifiques, reportez-vous à ZCOUNT. Le nombre de membres supprimés.

3. Exemples de commandes :

1. ZADD/ZCARD/ZCOUNT/ZREM/ZINCRBY/ZSCORE/ZRANGE/ZRANK :

 #在Shell的命令行下启动Redis客户端工具。
    /> redis-cli
    #添加一个分数为1的成员。
    redis 127.0.0.1:6379> zadd myzset 1 "one"
    (integer) 1
    #添加两个分数分别是2和3的两个成员。
    redis 127.0.0.1:6379> zadd myzset 2 "two" 3 "three"
    (integer) 2
    #0表示第一个成员,-1表示最后一个成员。WITHSCORES选项表示返回的结果中包含每个成员及其分数,否则只返回成员。
    redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES
    1) "one"
    2) "1"
    3) "two"
    4) "2"
    5) "three"
    6) "3"
    #获取成员one在Sorted-Set中的位置索引值。0表示第一个位置。
    redis 127.0.0.1:6379> zrank myzset one
    (integer) 0
    #成员four并不存在,因此返回nil。
    redis 127.0.0.1:6379> zrank myzset four
    (nil)
    #获取myzset键中成员的数量。    
    redis 127.0.0.1:6379> zcard myzset
    (integer) 3
    #返回与myzset关联的Sorted-Set中,分数满足表达式1 <= score <= 2的成员的数量。
    redis 127.0.0.1:6379> zcount myzset 1 2
    (integer) 2
    #删除成员one和two,返回实际删除成员的数量。
    redis 127.0.0.1:6379> zrem myzset one two
    (integer) 2
    #查看是否删除成功。
    redis 127.0.0.1:6379> zcard myzset
    (integer) 1
    #获取成员three的分数。返回值是字符串形式。
    redis 127.0.0.1:6379> zscore myzset three
    "3"
    #由于成员two已经被删除,所以该命令返回nil。
    redis 127.0.0.1:6379> zscore myzset two
    (nil)
    #将成员one的分数增加2,并返回该成员更新后的分数。
    redis 127.0.0.1:6379> zincrby myzset 2 one
    "3"
    #将成员one的分数增加-1,并返回该成员更新后的分数。
    redis 127.0.0.1:6379> zincrby myzset -1 one
    "2"
    #查看在更新了成员的分数后是否正确。
    redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES
    1) "one"
    2) "2"
    3) "two"
    4) "2"
    5) "three"
    6) "3"
Copier après la connexion

2. ZRANGEBYSCORE/ZREMRANGEBYRANK/ZREMRANGEBYSCORE

 redis 127.0.0.1:6379> del myzset
    (integer) 1
    redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
    (integer) 4
    #获取分数满足表达式1 <= score <= 2的成员。
    redis 127.0.0.1:6379> zrangebyscore myzset 1 2
    1) "one"
    2) "two"
    #获取分数满足表达式1 < score <= 2的成员。
    redis 127.0.0.1:6379> zrangebyscore myzset (1 2
    1) "two"
    #-inf表示第一个成员,+inf表示最后一个成员,limit后面的参数用于限制返回成员的自己,
    #2表示从位置索引(0-based)等于2的成员开始,去后面3个成员。
    redis 127.0.0.1:6379> zrangebyscore myzset -inf +inf limit 2 3
    1) "three"
    2) "four"
    #删除分数满足表达式1 <= score <= 2的成员,并返回实际删除的数量。
    redis 127.0.0.1:6379> zremrangebyscore myzset 1 2
    (integer) 2
    #看出一下上面的删除是否成功。
    redis 127.0.0.1:6379> zrange myzset 0 -1
    1) "three"
    2) "four"
    #删除位置索引满足表达式0 <= rank <= 1的成员。
    redis 127.0.0.1:6379> zremrangebyrank myzset 0 1
    (integer) 2
    #查看上一条命令是否删除成功。
    redis 127.0.0.1:6379> zcard myzset
    (integer) 0
Copier après la connexion

3. ZREVRANGE/ZREVRANGEBYSCORE/ZREVRANK :

 #为后面的示例准备测试数据。
    redis 127.0.0.1:6379> del myzset
    (integer) 0
    redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
    (integer) 4
    #以位置索引从高到低的方式获取并返回此区间内的成员。
    redis 127.0.0.1:6379> zrevrange myzset 0 -1 WITHSCORES
    1) "four"
    2) "4"
    3) "three"
    4) "3"
    5) "two"
    6) "2"
    7) "one"
    8) "1"
    #由于是从高到低的排序,所以位置等于0的是four,1是three,并以此类推。
    redis 127.0.0.1:6379> zrevrange myzset 1 3
    1) "three"
    2) "two"
    3) "one"
    #由于是从高到低的排序,所以one的位置是3。
    redis 127.0.0.1:6379> zrevrank myzset one
    (integer) 3
    #由于是从高到低的排序,所以four的位置是0。
    redis 127.0.0.1:6379> zrevrank myzset four
    (integer) 0
    #获取分数满足表达式3 >= score >= 0的成员,并以相反的顺序输出,即从高到底的顺序。
    redis 127.0.0.1:6379> zrevrangebyscore myzset 3 0
    1) "three"
    2) "two"
    3) "one"
    #该命令支持limit选项,其含义等同于zrangebyscore中的该选项,只是在计算位置时按照相反的顺序计算和获取。
    redis 127.0.0.1:6379> zrevrangebyscore myzset 4 0 limit 1 2
    1) "three"
    2) "two"
Copier après la connexion

4. Champ d'application :


1). Peut être utilisé pour le classement d'un jeu en ligne à grande échelle. Chaque fois que le score du joueur change, vous pouvez exécuter la commande ZADD pour mettre à jour le score du joueur, puis utiliser la commande ZRANGE pour obtenir les informations utilisateur des points TOP TEN. Bien entendu, nous pouvons également utiliser la commande ZRANK pour obtenir les informations de classement du joueur via le nom d'utilisateur. Enfin, nous utiliserons les commandes ZRANGE et ZRANK en combinaison pour obtenir rapidement des informations sur d'autres utilisateurs ayant des points similaires à ceux d'un certain joueur.
2). Le type Sorted-Sets peut également être utilisé pour créer des données d'index.

Ce qui précède est le contenu du didacticiel Redis (6) : type de données Sorted-Sets. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment construire le mode Cluster Redis Comment construire le mode Cluster Redis Apr 10, 2025 pm 10:15 PM

Le mode Redis Cluster déploie les instances Redis sur plusieurs serveurs grâce à la rupture, à l'amélioration de l'évolutivité et de la disponibilité. Les étapes de construction sont les suivantes: Créez des instances de redis étranges avec différents ports; Créer 3 instances Sentinel, Moniteur Redis Instances et basculement; Configurer les fichiers de configuration Sentinel, ajouter des informations d'instance Redis de surveillance et des paramètres de basculement; Configurer les fichiers de configuration d'instance Redis, activer le mode de cluster et spécifier le chemin du fichier d'informations de cluster; Créer un fichier nœuds.conf, contenant des informations de chaque instance redis; Démarrez le cluster, exécutez la commande CREATE pour créer un cluster et spécifiez le nombre de répliques; Connectez-vous au cluster pour exécuter la commande d'informations de cluster pour vérifier l'état du cluster; faire

Comment effacer les données redis Comment effacer les données redis Apr 10, 2025 pm 10:06 PM

Comment effacer les données Redis: utilisez la commande flushall pour effacer toutes les valeurs de clé. Utilisez la commande flushdb pour effacer la valeur clé de la base de données actuellement sélectionnée. Utilisez SELECT pour commuter les bases de données, puis utilisez FlushDB pour effacer plusieurs bases de données. Utilisez la commande del pour supprimer une clé spécifique. Utilisez l'outil Redis-CLI pour effacer les données.

Comment lire la file d'attente redis Comment lire la file d'attente redis Apr 10, 2025 pm 10:12 PM

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

Comment utiliser la commande redis Comment utiliser la commande redis Apr 10, 2025 pm 08:45 PM

L'utilisation de la directive Redis nécessite les étapes suivantes: Ouvrez le client Redis. Entrez la commande (Verbe Key Value). Fournit les paramètres requis (varie de l'instruction à l'instruction). Appuyez sur Entrée pour exécuter la commande. Redis renvoie une réponse indiquant le résultat de l'opération (généralement OK ou -err).

Comment utiliser Redis Lock Comment utiliser Redis Lock Apr 10, 2025 pm 08:39 PM

L'utilisation des opérations Redis pour verrouiller nécessite l'obtention du verrouillage via la commande setnx, puis en utilisant la commande Expire pour définir le temps d'expiration. Les étapes spécifiques sont les suivantes: (1) Utilisez la commande setnx pour essayer de définir une paire de valeurs de clé; (2) Utilisez la commande Expire pour définir le temps d'expiration du verrou; (3) Utilisez la commande del pour supprimer le verrouillage lorsque le verrouillage n'est plus nécessaire.

Comment lire le code source de Redis Comment lire le code source de Redis Apr 10, 2025 pm 08:27 PM

La meilleure façon de comprendre le code source redis est d'aller étape par étape: familiarisez-vous avec les bases de Redis. Sélectionnez un module ou une fonction spécifique comme point de départ. Commencez par le point d'entrée du module ou de la fonction et affichez le code ligne par ligne. Affichez le code via la chaîne d'appel de fonction. Familiez les structures de données sous-jacentes utilisées par Redis. Identifiez l'algorithme utilisé par Redis.

Comment utiliser la ligne de commande redis Comment utiliser la ligne de commande redis Apr 10, 2025 pm 10:18 PM

Utilisez l'outil de ligne de commande redis (Redis-CLI) pour gérer et utiliser Redis via les étapes suivantes: Connectez-vous au serveur, spécifiez l'adresse et le port. Envoyez des commandes au serveur à l'aide du nom et des paramètres de commande. Utilisez la commande d'aide pour afficher les informations d'aide pour une commande spécifique. Utilisez la commande QUIT pour quitter l'outil de ligne de commande.

Comment configurer le temps d'exécution du script LUA dans Centos Redis Comment configurer le temps d'exécution du script LUA dans Centos Redis Apr 14, 2025 pm 02:12 PM

Sur CentOS Systems, vous pouvez limiter le temps d'exécution des scripts LUA en modifiant les fichiers de configuration Redis ou en utilisant des commandes Redis pour empêcher les scripts malveillants de consommer trop de ressources. Méthode 1: Modifiez le fichier de configuration Redis et localisez le fichier de configuration Redis: le fichier de configuration redis est généralement situé dans /etc/redis/redis.conf. Edit Fichier de configuration: Ouvrez le fichier de configuration à l'aide d'un éditeur de texte (tel que VI ou NANO): Sudovi / etc / redis / redis.conf Définissez le délai d'exécution du script LUA: Ajouter ou modifier les lignes suivantes dans le fichier de configuration pour définir le temps d'exécution maximal du script LUA (unité: millisecondes)

See all articles