Table des matières
Introduction à la liste
Commandes communes
Ajouter une commande
查询命令
弹出/删除命令
修改命令
rpush key value
rrreee
Maison base de données Redis Analyse des commandes liées au type de données list de Redis et comment les utiliser

Analyse des commandes liées au type de données list de Redis et comment les utiliser

May 28, 2023 am 09:32 AM
redis list

    Introduction à la liste

    • list est un tableau de chaînes trié par ordre d'insertion (en termes simples, il stocke toujours les chaînes). Vous pouvez ajouter un élément en tête (à gauche) ou en queue (à droite) d'une liste, et une liste peut contenir jusqu'à ^32-1 éléments (plus de 4 milliards d'éléments par liste).

    • La liste dans Redis est très similaire à la LinkedList en Java. La couche inférieure est une structure de liste chaînée. Les opérations d'insertion et de suppression de la liste sont très rapides, avec une complexité temporelle de 0(1), contrairement à la liste chaînée. Opérations d'insertion et de suppression de la structure du tableau nécessaires. Bien qu'il s'agisse encore apparemment d'une liste, l'implémentation sous-jacente des listes dans Redis ne se limite pas à de simples listes doublement liées.

    • Lorsque la quantité de données est faible, sa structure de stockage sous-jacente est une mémoire continue, appelée ziplist (liste compressée). Elle stocke tous les éléments étroitement ensemble et alloue une mémoire continue lorsque la quantité de données est importante. deviendra une structure de liste rapide (liste chaînée rapide).

    • Mais une simple liste chaînée est également imparfaite. Les pointeurs précédent et suivant de la liste chaînée occuperont plus de mémoire, gaspilleront de l'espace et augmenteront la fragmentation de la mémoire. Depuis Redis 3.2, Redis utilise la liste rapide de structure de données hybride (liste chaînée rapide), qui se compose d'une liste zip et d'une liste chaînée.

    Commandes communes

    Ajouter une commande

    lpush key valuelpush key value

    从左边插入元素(将一个或多个值插入到列表头部)

    127.0.0.1:6379> lpush ids 1
    (integer) 1
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    127.0.0.1:6379> lpush ids 2
    (integer) 2
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    Copier après la connexion

    rpush key value

    从右边插入元素(将一个或多个值插入到列表的尾部(最右边))

    127.0.0.1:6379> rpush ids 3
    (integer) 3
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    3) "3"
    Copier après la connexion

    linsert key BEFORE|AFTER pivot value
    向某个元素前/后插入元素,返回结果为当前列表长度,注意列表不存在或者指定元素不存在列表中时,都将不执行任何操作。

    //元素3前插入0
    127.0.0.1:6379> linsert ids before 3 0
    (integer) 4
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    3) "0"
    4) "3"
    //元素3后插入0
    127.0.0.1:6379> linsert ids after 3 4
    (integer) 5
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    3) "0"
    4) "3"
    5) "4"
    Copier après la connexion

    查询命令

    lrange key start end
    获取列表中指定范围内的元素列表;若start值大于列表end值则返回空列表
    如上已经展示过了

    lindex key index
    获取列表指定索引下标的元素

    127.0.0.1:6379> lindex ids 0
    "2"
    127.0.0.1:6379> lindex ids -1
    "4"
    Copier après la connexion

    llen key
    获取列表长度;列表不存在则返回0

    127.0.0.1:6379> llen ids
    (integer) 5
    Copier après la connexion

    弹出/删除命令

    lpop key
    从列表左侧弹出元素并返回头部元素

    127.0.0.1:6379> lpop ids
    "2"
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    2) "0"
    3) "3"
    4) "4"
    Copier après la connexion

    rpop key
    从列表右侧弹出元素并返回尾部元素

    127.0.0.1:6379> rpop ids
    "4"
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    2) "0"
    3) "3"
    Copier après la connexion

    lrem key count value
    从列表中找到等于value的元素进行删除,根据count的不同分为三种情况:
    count > 0,从表头开始向表尾,移除数量为count个元素;
    count < 0,从表尾开始向表头,移除数量为count的绝对值个元素;
    count = 0,移除表中所有与 value 相等的值

    127.0.0.1:6379> lrem ids 0 3
    (integer) 1
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    2) "0"
    Copier après la connexion

    ltrim key start end
    对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

    127.0.0.1:6379> ltrim ids 0 0
    OK
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    Copier après la connexion

    修改命令

    lset key index value
    Insérer des éléments depuis la gauche (insérer une ou plusieurs valeurs en tête de liste)

    127.0.0.1:6379> lset ids 0 0
    OK
    127.0.0.1:6379> lrange ids 0 -1
    1) "0"
    Copier après la connexion

    rpush key value

    Insérer des éléments à partir de la droite (insérer une ou plusieurs valeurs à la queue (à l'extrême droite) de la liste)
    rrreee

    insert key AVANT|APRÈS la valeur pivot

    transmettre à un élément / Après avoir inséré un élément, le résultat renvoyé est la longueur actuelle de la liste. Notez que si la liste n'existe pas ou si l'élément spécifié n'existe pas dans la liste, aucune opération ne sera effectuée.
    rrreee
    Commande de requête

    lrange key start end

    Obtenir la liste des éléments dans la plage spécifiée dans la liste ; si la valeur de début est supérieure à la valeur de fin de la liste, une liste vide sera être renvoyé

    Comme indiqué ci-dessusAnalyse des commandes liées au type de données list de Redis et comment les utiliser

    lindex key index

    Obtenir l'élément à l'indice d'index spécifié de la listeAnalyse des commandes liées au type de données list de Redis et comment les utiliserrrreee

    llen key

    Obtenir la longueur de la liste ; si la liste n'existe pas, renvoyez la commande 0
    rrreee

    Pop/delete

    Analyse des commandes liées au type de données list de Redis et comment les utiliserlpop key

    Popez un élément du côté gauche de la liste et renvoyez l'élément de tête

    rrreeeAnalyse des commandes liées au type de données list de Redis et comment les utiliserrpop key

    Déplacez un élément du côté droit de la liste et renvoyez l'élément de queue

    rrreee

    lrem key count value

    Trouvez l'élément égal à la valeur dans la liste et supprimez-le. est divisé en trois situations selon le nombre :

    count > 0, en commençant par la tête du tableau jusqu'à la fin du tableau, supprimez les éléments du nombre ;

    count count = 0, supprimez toutes les valeurs égales à la valeur dans le tableau 🎜rrreee🎜ltrim key start end 🎜Coupez une liste, c'est-à-dire laissez la liste uniquement conserve les éléments dans la plage spécifiée, et les éléments qui ne sont pas dans la plage spécifiée seront supprimés🎜rrreee🎜Modifier la commande🎜🎜lset key index value🎜Modifiez la valeur de l'élément avec l'indice spécifié et définissez-le sur value🎜rrreee🎜Bloquer la commande contextuelle🎜🎜blpop key [key …] timeout🎜Supprimer et récupérer le premier élément de la liste Si la liste ne contient aucun élément, elle bloquera La liste attend que le délai d'attente soit écoulé (dans. secondes) ou un élément popable est trouvé🎜🎜brpop key [key …] timeout🎜Supprimez et récupérez le dernier élément de la liste Si la liste ne contient aucun élément, elle bloquera la liste jusqu'à ce que le délai d'attente expire ou qu'un élément popable soit trouvé. est trouvé. 🎜Démonstration : 🎜Ouvrez trois fenêtres de connexion Reids, la première exécute blpop, la seconde exécute brpop et la troisième exécute add : 🎜Vous pouvez voir que les fenêtres 1 et 2 ont été bloquées ici après l'exécution. Il n'y a aucun élément 🎜🎜🎜🎜🎜🎜🎜🎜La fenêtre 3 exécute l'ajout : lpush ids 1 2 3 4 5 6🎜Vous pouvez voir que les éléments correspondants apparaissent immédiatement dans les fenêtres 1 et 2 : 🎜🎜🎜🎜🎜🎜🎜 🎜Scénario d'application 🎜🎜File d'attente des messages : lpop et rpush (ou à l'inverse, lpush et rpop) peuvent implémenter la fonction de file d'attente 🎜🎜 comme la liste, la liste de commentaires et le classement dans le cercle d'amis : la commande lpush et la commande lrange peuvent implémenter la dernière fonction de liste, à chaque fois via la commande lpush Insérez de nouveaux éléments dans la liste, puis lisez la dernière liste d'éléments via la commande lrange. 🎜

    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 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

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    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 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 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 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 faire du message middleware pour redis Comment faire du message middleware pour redis Apr 10, 2025 pm 07:51 PM

    Redis, en tant que Message Middleware, prend en charge les modèles de consommation de production, peut persister des messages et assurer une livraison fiable. L'utilisation de Redis comme Message Middleware permet une faible latence, une messagerie fiable et évolutive.

    Comment démarrer le serveur avec redis Comment démarrer le serveur avec redis Apr 10, 2025 pm 08:12 PM

    Les étapes pour démarrer un serveur Redis incluent: Installez Redis en fonction du système d'exploitation. Démarrez le service Redis via Redis-Server (Linux / MacOS) ou Redis-Server.exe (Windows). Utilisez la commande redis-Cli Ping (Linux / MacOS) ou redis-Cli.exe Ping (Windows) pour vérifier l'état du service. Utilisez un client redis, tel que redis-cli, python ou node.js pour accéder au serveur.

    See all articles