Maison  >  Article  >  base de données  >  Résumé des instructions de fonctionnement du type de données commun Redis

Résumé des instructions de fonctionnement du type de données commun Redis

coldplay.xixi
coldplay.xixiavant
2021-02-19 09:45:081852parcourir

Résumé des instructions de fonctionnement du type de données commun Redis

Recommandé (gratuit) : tutoriel redis

La commande Redis est utilisée pour effectuer des opérations sur Redis service . Pour exécuter des commandes sur le service redis, il faut un client redis
. Vous pouvez utiliser la commande redis-cli pour démarrer le client Redis. La commande de démarrage complète est redis-cli -h host -p port -a password.

Il existe cinq types de données couramment utilisés dans Redis : string, hash, list, set et zset(ensemble trié ensemble ordonné). Avant d'apprendre ces types, vous devez apprendre la gestion des touches de commande courantes. Ces types sont présentés en détail ci-dessous : Pour une API plus détaillée, veuillez vous référer ici

Commandes communes Gestion des clés

Scénarios d'application clés :

  • Informations sur la promotion à durée limitée.
  • Cache de données du site Web (pour certaines données qui doivent être mises à jour régulièrement, comme les classements des scores)
  • Code de vérification du téléphone portable
  • Limiter la fréquence d'accès des visiteurs du site Web (par exemple, accès maximum en 1 minute 10 fois)

Suggestions de dénomination des clés :
Le nom de la clé est sensible à la casse ; la clé ne doit pas être trop longue, essayez de ne pas le faire ; dépasse 1024 octets, une longueur trop longue réduira l'efficacité de la recherche ; dans un Il est préférable d'utiliser un modèle de dénomination unifié pour les clés du projet, tel que user:id:password

keys pattern Renvoie toutes les clés qui correspond au modèle donné et une correspondance floue est possible, telle que keys abc* représente la clé commençant par abc
exists key Détermine si une clé existe, renvoie 1 si elle existe et renvoie 0 si elle n'existe pas
expire key second Définir le temps d'activité d'une touche (secondes)
pexpire key milliseconds Définir le temps d'activité d'une touche (millisecondes) )
del key                                               ulous in in on in on a key  Renvoie le temps restant d'une clé, -2 si la clé n'existe pas ; renvoie -1 si la clé existe mais n'a pas défini le temps de survie restant
ttl key Annuler le délai d'expiration
persist key Sélectionnez la base de données, il y en a 16 par défaut, l'index commence à 0
select dbindex Déplacer la clé de la base de données actuelle vers la base de données dbindex
move key, dbindex Renvoie aléatoirement une clé
randomkey Renommer la clé
keyrename key, key2 Retour le nombre de clés dans la base de données actuelle
dbsize Afficher les informations de la base de données
info Stocker la demande reçue en temps réel et renvoyer la configuration appropriée
config get * Type de valeur de retour
type(key)

Supprimer toutes les clés de la base de données actuellement sélectionnée

flushdbSupprimer toutes les clés de toutes les bases de données
flushall

1. le type de Redis le plus basique, et une clé peut stocker jusqu'à 523 Mo. Le type String est binaire sécurisé. Cela signifie que la chaîne de redis peut contenir n'importe quelle donnée. Tels que des images ou des objets sérialisés. Scénarios d'application de

String :

String est généralement utilisé pour enregistrer une seule chaîne ou des données de chaîne JSON.

Étant donné que String est binaire, le contenu du fichier image peut être stocké sous forme de chaîne.

Compteur (application régulière de cache clé-valeur, nombre de fans, nombre de Weibo, votes, etc.)
  • INCR et d'autres instructions elles-mêmes ont les caractéristiques de l'atome opérations, elles sont donc complètement Vous pouvez utiliser les instructions NCR, INCRBY, DECR, DECRBY et d'autres de Redis pour obtenir l'effet du comptage atomique. Si, dans un certain scénario, trois clients lisent la valeur de minum (la valeur est 2) en même temps, puis y ajoutent 1 en même temps, alors la valeur finale de bynum doit être 5. De nombreux sites Web utilisent cette fonctionnalité des rouges pour répondre aux besoins de comptage statistique des entreprises.
Syntaxe d'affectation

Attribuer une valeur à la clé. Plusieurs paramètres écraseront l'ancienne valeur et ignoreront le type

Attribuer une valeur à la clé, si la clé existe déjà, elle n'est pas définie et renvoie 0, sinon elle est définie et renvoie 1. C'est l'une des solutions aux serrures distribuées.   Attribuez une valeur à la clé et définissez le délai d'expiration. Après l'expiration, la clé et la valeur seront effacées.
set key value Définissez la valeur dans l'intervalle spécifié, l'indice commence à 0 et remplacez la chaîne.
setnx key value
Syntaxe des valeurssetex key time value

get key Récupère la valeur de la clé spécifiée. Si la clé n'existe pas, renvoie nil
getrange key start end Récupère la sous-chaîne de la valeur de la clé spécifiée, y compris les indices de début et de fin
getbit key offset Valeur de chaîne stockée, récupère le bit (binaire) du décalage spécifié
getset key value Définissez une nouvelle valeur pour la clé et renvoyez l'ancienne valeur en même temps. Si la clé n'existe pas, renvoyez nil
Renvoie la chaîne nommée clé Sous-chaîne de valeursubstr(key, start, end)
Syntaxe de suppression de valeur
                                        del key

                                          logue La valeur de

Lot lecture
mset k1 v1 k2 v2...kn vn

                                                                             logue > La valeur de clé correspond à +1  La valeur de clé correspond à +entier

>mget k1 k2 ... kn
Concaténation de chaînes
Ajouter une valeur à la fin de la clé spécifiéeincr key
incrby key integer Définir plusieurs clés et valeurs en même temps, efficace uniquement lorsque la clé n'existe pas avant
decr keyLongueur de la chaîne
decrby key integer

                 

2. Double paire clé-valeur Hash
append key valueType de hachage C'est une table de mappage de champ et valeur de type String. Hash est particulièrement adapté au stockage d'objets. Il occupe moins d'espace disque que String et peut être considéré comme un conteneur de carte avec clé et valeur. Chaque hachage dans Redis peut stocker (2 ^ 32) -1 paires clé-valeur.

msetnx(key1, value1...keyN, valueN)
Scénarios d'application de hachage :
strlen key est généralement utilisé pour stocker les données d'un objet d'information utilisateur.

Redis' Hash utilise en fait la valeur stockée en interne comme HashMap.

Syntaxe d'affectation

Définir le champ et la valeur pour la clé spécifiée Définir le champ et la valeur pour la clé spécifiée, si la clé a été Elle ne prendra pas effet si elle existe.

    Définissez simultanément plusieurs valeurs de champ (paires de valeurs de champ) sur la clé de la table de hachage.
  • Syntaxe des valeurs

Obtenir la valeur basée sur le champ

Obtenir toutes les valeurs basées sur plusieurs champs

hset key field valueObtenir tous les champs et valeurs de la table de hachage
hsetnx key field value Récupérer tous les champs de la table de hachage
hmset key f1 v1 f2 v2 ... fn vn Récupérer toutes les valeurs correspondant aux champs de la table de hachage

Afficher la clé de la table de hachage, le champ spécifié existe-t-il ? et la même clé

Grande grammaire hget key field
hmget key f1 f2 ... fn
La valeur correspondant à celle correspondante dans la clé de la table de hachage augmente d'un nombre entier hgetall key La valeur correspondant au champ dans la clé de la table de hachage est augmentée par incrément
hkeys key
3. Liste chaînée à double extrémitéhvals key
hexists key field
Le type List est une collection de structures de listes chaînées, et ses principales fonctions sont push , pop, get elements, etc. Plus en détail, le type List est une structure de liste chaînée à double extrémité. Les éléments de tête ou de queue de la collection peuvent être ajoutés et supprimés via des opérations associées. La liste peut être utilisée à la fois comme pile et comme file d'attente, ce qui peut répondre à la plupart des cas. besoins. hlen key

Si la clé n'existe pas, créez une nouvelle liste chaînée. Si la clé existe déjà, ajoutez un nouveau contenu.

Si toutes les valeurs sont supprimées, la clé correspondante disparaîtra. hdel key field1 field2 ... fieldn
L'efficacité des opérations de liste chaînée est extrêmement élevée pour la tête et la queue, mais l'efficacité opérationnelle des éléments du milieu est très faible. del key

Scénarios d'application

hincrby key field integer
hincrbyfloat key field incrementSuppression des données de collecte avec de grandes quantités de données

Affichage des données de liste, liste de surveillance , liste de fans, commentaires de messages, etc... pagination, actualités chaudes (Top10), etc. La fonction de pagination peut être facilement implémentée à l'aide de lrange. Dans le système de blog, les commentaires de chaque article de blog peuvent également être stockés dans une liste distincte.

  • File d'attente des tâches
    Lors du traitement des demandes de commandes envoyées par le client Web, le temps d'exécution de certaines opérations peut être plus long que prévu en plaçant les informations pertinentes sur les tâches à exécuter, par. En plaçant des tâches dans une file d'attente puis en traitant la file d'attente, les utilisateurs peuvent différer les opérations qui prennent un certain temps. Cette pratique consistant à confier le travail à un processeur de tâches est appelée file d'attente de tâches. La liste peut généralement être utilisée pour implémenter une file d’attente de messages et garantir l’ordre.

  • Syntaxe d'affectation

    lpush key value1 value2 ... valueN Insérer une ou plusieurs valeurs en tête de liste (ajouter par la gauche)
    rpush key value1 value2 ... valueN Insérer une ou plusieurs valeurs en tête de liste (ajouter par la droite)
    lpushx key value Insérer une valeur en tête d'une liste existante (à l'extrême gauche). Si la liste n'existe pas, l'opération n'est pas valide.
    rpushx key value Insérez une valeur à la fin (à l'extrême droite) de la liste existante. Si la liste n'existe pas, l'opération n'est pas valide.

    Syntaxe des valeurs

    llen keyObtenir la longueur de la liste
    lindex key indexObtenir les éléments de la liste par index
    lrange key start stopObtenir la liste dans la plage spécifiée Éléments

    Supprimer la syntaxe

    lpop key Supprimer et obtenir le premier élément de la liste (supprimé à gauche)
    lpop key Supprimer Et récupérer le dernier élément de la liste (supprimé à droite)
    lrem key count value  Supprimer le nombre de clés avec valeur
    blpop key1 key2 timeout  Supprimer et récupérer le premier élément de la liste, si la liste ne contient aucun élément bloquera la liste jusqu'à ce que le délai d'attente soit écoulé ou qu'un élément contextuel soit trouvé
    brpop key1 key2 timeout Supprimez et récupérez le dernier élément de la liste. Si la liste ne contient aucun élément, la liste sera bloquée jusqu'à l'expiration du délai d'attente. ou un élément contextuel est trouvé
    ltrim key start stop Élaguez une liste, conservez uniquement les éléments dans la plage spécifiée et supprimez tous les éléments qui ne se trouvent pas dans la plage spécifiée.

    Modifier la syntaxe

    lset key index value Définir la valeur de l'élément de liste par index
    linsert key before|after world value Insérer la valeur de l'élément avant ou après un élément du monde dans la liste.

    Commandes avancées

    rpoplpush source destination Supprimez le dernier élément de la liste source, ajoutez l'élément à la liste de destination et revenez. (Peut fonctionner sur lui-même, comme une file d'attente)
    brpoplpush source destination timeout Supprimez le dernier élément de la liste source, ajoutez l'élément à la liste de destination et revenez si la liste source n'a aucun élément, cela bloquera la liste ; jusqu'à ce qu'il attende l'expiration du délai ou la découverte jusqu'à ce que l'élément puisse être supprimé.

    4. Ensemble non ordonné Set

    Set est un ensemble non ordonné de type String. Les membres de l'ensemble sont uniques et les données en double ne peuvent pas apparaître dans l'ensemble.
    Les collections dans Redis sont implémentées via des tables de hachage, donc la complexité de l'ajout, de la suppression et de la recherche est O(1).
    Le nombre maximum de membres dans une collection est de 232 - 1 (4294967295, chaque collection peut stocker plus de 4 milliards de membres).
    Semblable à la collection Hashtable en JAVA

    • La structure de stockage sous-jacente de l'ensemble de Redis est particulièrement magique La structure de stockage sous-jacente utilise deux structures de données, intset et Intset peut être comprise comme un tableau. et table de hachage. C'est une table de hachage ordinaire (la clé est la valeur de l'ensemble, la valeur est nulle).
    • Intset est en fait un tableau à l'intérieur (tableau int8_t coentents[]), et les données sont stockées dans l'ordre, car lors de la recherche de données, elles sont implémentées via une recherche binaire.

    Scénarios d'application

    • Effectuer des opérations d'intersection, d'union et de différence sur des données [calcul] entre deux ensembles
    • Utiliser des fonctions très pratiques telles que le suivi commun, les préférences communes et les amis du deuxième degré. Pour toutes les opérations de collecte ci-dessus, vous pouvez également utiliser différentes commandes pour choisir de renvoyer les résultats au client ou de les stocker dans une nouvelle collection.
    • En utilisant l'unicité, vous pouvez compter toutes les adresses IP indépendantes qui visitent le site Web

    Syntaxe d'attribution

    sadd key member1 member2 ... memberN Ajoutez-en une ou plusieurs à le membre de la collection

    syntaxe de valeur

    scard key ccogène in in in en partie en partie dans les insembres >> int
    log smembers key
    sismember key member supprimer et renvoyer un ou plusieurs éléments aléatoires de la collection
    srandmember key count

     Déplacer l'élément membre de la collection source vers la collection de destination

    Syntaxe de l'ensemble de différences

    srem key member1 member2...memberN
                                                   Fabriquer dans dans dans plaisir dans dans dans dans à la destination >> Renvoie l'ensemble des différences de tous les ensembles donnés (côté gauche) spop kye count

        Renvoie l'ensemble des différences de tous les ensembles donnés et stocke-le dans la destination (les données d'origine dans la destination sont effacées)

    smove source destincation member

    Syntaxe d'intersection

    Renvoie l'intersection de tous les ensembles donnés (données partagées)

    sdiff key1 key2 Renvoie l'intersection de tous les ensembles donnés et la stocke dans destination
    sdiffstore destination key1 key2

    Syntaxe d'union

    Renvoie l'union de tous les ensembles donnés

    L'union de tous les ensembles donnés est stockée dans la collection de destination sinter key1 key2
    sinterstore destination key1 key25. Ensemble ordonné Zset

    Redis zset, comme set, est également une collection d'éléments de type chaîne et n'autorise pas les membres en double. La différence est que chaque élément est associé à une partition de type double. Redis utilise des scores pour trier les membres de la collection du plus petit au plus grand. Les membres de zset sont uniques, mais les scores peuvent être répétés.
    sunion key1 key2
    L'ensemble précédent était k1 v1 v2sunionstore destination key1 key2

    Le zset actuel est k1 score1 v1 score2 v2

    Scénario d'application

    • Classements
    • ①La chronologie publique de Twitter peut être stockée avec l'heure de publication comme score, de sorte qu'elle soit automatiquement triée par heure lors de sa récupération.
    • ②Un ensemble trié qui stocke les notes de toute la classe. La valeur définie peut être le numéro d'élève du camarade de classe, et le score peut être le résultat du test de cette manière, lorsque les données sont insérées dans l'ensemble, naturel. le tri a déjà été effectué.
    • ③ Utilisez Sorted Set pour créer une file d'attente pondérée. Par exemple, le score des messages ordinaires est de 1 et le score des messages importants est de 2. Ensuite, le thread de travail peut choisir d'obtenir les tâches de travail dans l'ordre inverse de celui des messages. scores. Priorisez les tâches importantes.

    Syntaxe d'affectation

      Ajouter un ou plusieurs membres à un ensemble ordonné, ou mettre à jour le score d'un membre existant


    • Syntaxe des valeurs
                                      ulous in in dans un ensemble ordonné L'index de

    Renvoie l'ensemble ordonné à travers l'intervalle d'index pour former les membres dans l'intervalle spécifié (de bas en haut)
    Renvoie l'ensemble ordonné à travers l'intervalle d'index pour former les membres dans l'intervalle spécifié (de haut en bas) zadd key score1 member1 score2 member2

    Compte le nombre de membres dans la plage de dictionnaire spécifiée dans un ensemble ordonné

    Supprimer la syntaxe
    zcard key
    Supprimer l'ensemble zcount key min max
    Supprimer un ou plusieurs membres de l'ensemble ordonné zrank key member
                                             a nettoyé tous les membres de l'ensemble trié avec un intervalle de classement donné (la première place est 0) (ordre bas à haut) Tous les membres de l'intervalle de score donné dans l'ensemble ordonné zrange key start stop [withscores]
    zrevrange key start stop [withscores]Incrémentation automatique du score
    zlexcount key,min,max

        Le score du membre spécifié dans l'ensemble ordonné plus l'incrément

    6 HyperLoglog
    del key
    Redis a ajouté la structure HyperLoglog dans la version 2.8.9. Cette structure est un algorithme utilisé pour faire des statistiques de cardinalité. zrem key member [member ...]
    Avantages : Quel que soit le nombre d'éléments d'entrée, l'espace requis pour calculer la cardinalité est toujours fixe et très petit. zremrangebyrank key start stop
    Inconvénients : Il calculera uniquement la base de l'élément d'entrée, mais ne stockera pas l'élément d'entrée lui-même. L'index ne peut pas renvoyer chaque élément de l'entrée comme un ensemble. zremrangebyscore key min max

    Qu'est-ce qu'un numéro de base ?
    Par exemple, l'ensemble de données {1, 2, 3, 3, 4, 5, 5}, alors l'ensemble de cardinalité de cet ensemble de données est {1, 2, 3, 4, 5}, et la cardinalité est 5. L'estimation de la cardinalité consiste à calculer rapidement la cardinalité dans la plage d'erreur acceptable.
    Pourquoi utiliser HyperLogLog ?
    Traditionnellement, compter la valeur de base d'un objet nécessite 12 Mo de mémoire. Si 10 000 objets sont comptés, près de 120 G de mémoire sont nécessaires, ce qui ne peut pas être largement utilisé dans les scénarios Big Data. HyperLogLog est utilisé pour compter la valeur de base. de 100 millions de données, cela prend environ 12 Mo et l'utilisation de la mémoire est considérablement réduite.

    Résumé des instructions de fonctionnement du type de données commun Redis
    pfadd key element1 element2 ... elementN                                               ulous dans perLogLog fusionné dans A HyperLogLog
    pfcount key
    pfmerge destkey sourcekey1 sourcekey2 ...sourcekeyNPlus de recommandations d'apprentissage gratuites associées :

    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