Maison  >  Article  >  cadre php  >  Comprendre le type de données de base de Redis

Comprendre le type de données de base de Redis

coldplay.xixi
coldplay.xixiavant
2020-07-03 17:20:102682parcourir

est binaire sûr, c'est-à-dire que Comprendre le type de données de base de Redis peut contenir n'importe quelle donnée.

Les chaînes ordinaires dans Redis utilisent le codage brut, qui est la méthode de codage d'origine. Cette méthode de codage étendra dynamiquement et pré-allouera l'espace redondant à l'avance pour réduire la surcharge liée à l'allocation fréquente de mémoire. Lorsque la longueur de la chaîne est inférieure à 1 Mo, elle sera allouée à deux fois la longueur requise. Si elle dépasse 1 Mo, elle sera pré-attribuée en ajoutant 1 Mo à chaque fois. Les nombres dans

tring sont également stockés sous forme de types de chaîne, mais la méthode de codage est différente des chaînes ordinaires. Les nombres utilisent un string codage entier

et le contenu de la chaîne est directement défini sur le.

valeur entière. Séquence d'octets binaires

.

Lors du stockage de chaînes ordinaires, d'objets sérialisés et de compteurs, vous pouvez utiliser le type de chaîne Redis. Les instructions correspondant au type de données de chaîne incluent set, get, mset, incr, decr, etc.

Redislist list

list est une

liste rapide à double chaînage

qui stocke une série de valeurs de chaîne

Pour les éléments pop et push conventionnels, les performances sont très élevées et la complexité temporelle est O(1), car la liste est directement ajoutée ou sautée. Cependant, pour l'insertion aléatoire, la suppression aléatoire et l'acquisition de plage aléatoire, la position doit être déterminée en interrogeant la liste, et les performances sont relativement faibles.

Lors de l'utilisation de la liste, vous pouvez utiliser lpush, lpop, rpush, rpop et lrange pour effectuer des opérations régulières d'entrée et de sortie de file d'attente et d'acquisition de plage. Dans certains scénarios spéciaux, vous pouvez également utiliser lset et linsert pour effectuer. opérations d'insertion aléatoire. , utilisez lrem pour effectuer l'opération de suppression d'élément spécifiée ; enfin, lors de la consommation de la liste de messages, vous pouvez également utiliser Blpop et Brpop pour bloquer l'acquisition, de sorte que lorsque la liste ne contient temporairement aucun élément, vous puissiez attendre tranquillement le insertion de nouveaux éléments sans enquête continue supplémentaire.

list set set

set est une collection non ordonnée de type chaîne. Les éléments de l'ensemble sont uniques, c'est-à-dire qu'il n'y aura pas d'éléments en double dans l'ensemble. Les collections dans Redis sont généralement implémentées via des tables de hachage dict, de sorte que les éléments d'insertion, de suppression et de requête peuvent être directement localisés en fonction de la valeur de hachage de l'élément, et la complexité temporelle est O(1). L'instruction

opération

détermine s'il existe un élément dans la structure de données définie correspondant à la clé, et renvoie 1 si il existe. Sinon, retournez l'instruction

    pour effectuer un ensemble de différences sur plusieurs collections d'ensembles ; effectuer un ensemble de différences sur plusieurs ensembles Effectuer une intersection ; la commande
  • sismember

  • effectue une union sur plusieurs ensembles ;
  • sdiff

  • fait apparaître un élément aléatoire ;
  • sinter

    renvoie un ou plusieurs éléments aléatoires.
  • sunionDans le système social, il peut être utilisé pour stocker la

    liste d'amis
  • que vous suivez, pour déterminer si vous êtes attentif, et il peut également être utilisé pour faire des
  • recommandations d'amis

    . De plus, vous pouvez également utiliser le caractère unique de l'ensemble pour établir des statistiques précises sur l'activité source et l'adresse IP source du service. spop

  • ensemble trié Ensemble trié

    srandmemberDans un ensemble trié, chaque élément est associé à une valeur de score de type double. L'ensemble trié est trié du plus petit au plus grand selon cette valeur de score. Dans un ensemble ordonné, les éléments ne peuvent pas être répétés, mais les valeurs de score peuvent être répétées.

Opération

Instruction : Mettez les éléments de l'ensemble commandé dans l'ordre

commande : obtenez la valeur de score de l'élément ;

commande : renvoie les éléments dans la plage de scores spécifiée en spécifiant le score
  • Lorsque la valeur de score d'un élément change, vous pouvez également utiliser l'instruction zincrby pour ajouter ou soustraire la valeur de score de l'élément.

    zscan

  • Utilisez l'instruction
  • pour effectuer l'intersection et l'union de plusieurs ensembles ordonnés, puis stockez le nouvel ensemble ordonné dans une nouvelle clé s'il y a des éléments en double, les scores répétés. les éléments sont ajoutés puis utilisés comme valeur de score de l'élément dans le nouvel ensemble.

    zscore

  • Vous pouvez utiliser des collections ordonnées pour compter les classements et actualiser les classements en temps réel. Il peut également être utilisé pour enregistrer les scores des étudiants, afin que vous puissiez facilement obtenir une liste des étudiants dans un certain domaine. plage de scores Vous pouvez également utiliser Pour ajouter du poids aux statistiques du système et les afficher en temps réel sur le tableau de bord.
  • zrange

    hachage Hash
  • omis

    bitmap

    Un bitmap est une série de nombres binaires continus. La couche inférieure est en fait encapsulée et stockée en fonction de string

    effectue des opérations d'instruction sur. une base petit à petit. La position de chaque bit dans le bitmap est le décalage. Vous pouvez utiliser setbit et bitfield pour définir 0 ou 1 pour chaque bit dans le bitmap. Vous pouvez également utiliser bitcount pour compter le nombre de bits définis sur 1 dans le bitmap. utilisez également bitcount pour compter le nombre de bits définis sur 1 dans le bitmap. Bitop peut être utilisé pour effectuer des opérations telles que AND, OR, XOR, etc. sur plusieurs bitmaps.

    Redis 笔记

    Les caractéristiques des bitmaps sont que les opérations telles que le réglage au niveau du bit, la sommation et l'opération OU sont très efficaces et que le coût de stockage est très faible s'il est utilisé pour le stockage. Attributs de balise d'objet, un bit peut stocker une balise. Vous pouvez utiliser bitmap pour stocker le statut de connexion de l'utilisateur au cours des N derniers jours, en utilisant 1 bit chaque jour et en le définissant sur 1 lors de la connexion. bitmap

    Les recommandations personnalisées sont très importantes dans les applications sociales. Vous pouvez définir une série de balises pour les actualités et les flux, tels que l'armée, les divertissements, les vidéos, les images, le texte, etc. Le bitmap est utilisé pour stocker ces balises dans le bit d’étiquette correspondant mis à 1. Pour les utilisateurs, une méthode similaire peut être utilisée pour enregistrer plusieurs attributs des utilisateurs, et des statistiques multidimensionnelles peuvent être facilement réalisées sur la base de balises. Les instructions importantes pour les bitmaps bitmap incluent : setbit, getbit, bitcount, bitfield, bitop, bitpos, etc.

    Expérience d'utilisation

    Statistiques de l'état de connexion de l'utilisateur : 1 2 3 Connexion dans les 5 jours

    bitmap : 1 1 1 0 1

    Localisation géographique GEO

    Lors du stockage d'un certain point de localisation, utilisez d'abord l'algorithme

    pour cartographier et encoder la longitude et la latitude bidimensionnelles de l'emplacement dans un format unidimensionnel de 52 bits valeur entière et combine le nom de l'emplacement, la longitude et la latitude. Le score codé est stocké sous forme de paire clé-valeur dans l'ensemble trié correspondant à la clé de classification. Geohash

    Lorsque vous devez calculer les personnes à proximité d'un certain point de localisation A, utilisez d'abord l'emplacement spécifié A comme point central et la distance comme rayon pour calculer la plage de 8 azimuts du hachage GEO, puis interrogez tour à tour les personnes dans la plage d'azimut. Tous les points de position, tant que la distance entre ces points de position et la position centrale A est dans la plage de distance requise, est le point de position cible. Après avoir interrogé tous les points de position dans la plage, réorganisez pour obtenir toutes les cibles proches du point de position A.

    Utilisez geoadd pour ajouter des noms d'emplacement (tels que des personnes, des véhicules, des noms de magasins) et les informations de localisation géographique correspondantes à la clé de classification d'emplacement spécifiée

    Utilisez geopos pour interroger facilement l'emplacement d'un nom ; informations de localisation ;

    Utilisez le rayon géographique pour obtenir tous les éléments proches de l'emplacement spécifié et ne dépassant pas la distance spécifiée

    Localisation géographique Redis GEO, utilisez Geohash pour convertir un grand nombre de longitudes bidimensionnelles et latitude en valeurs entières unidimensionnelles, ce qui facilite l'interrogation de l'emplacement géographique, la mesure de la distance et la plage de recherche. Cependant, en raison du grand nombre de points géographiques, il peut y avoir un grand nombre d'éléments sous une seule clé de classification géographique. Lors de la conception de GEO, il est nécessaire de planifier à l'avance pour éviter une expansion excessive d'une seule clé.

    La structure de données de localisation géographique GEO de Redis comporte de nombreux scénarios d'application, tels que l'interrogation de l'emplacement spécifique d'un lieu, la vérification de la distance entre l'emplacement actuel et la destination et la vérification des personnes, restaurants, cinémas, etc. . Dans la structure de données de localisation géographique GEO, les instructions importantes incluent geoadd, geopos, geodist, georadius, georadiusbymember, etc.

    Utilisez géodiste pour obtenir la distance entre deux emplacements spécifiés.

    Statistiques de cardinalité hyperLogLog

    est un type de données utilisé pour les statistiques de cardinalité Lorsqu'un grand nombre d'éléments sont saisis pour les statistiques, seule une petite quantité de mémoire. est requis. C'est tout. HyperLogLog ne sauvegarde pas les métadonnées, mais enregistre uniquement le nombre estimé d'éléments à compter. Ce nombre estimé est une approximation avec un écart type de 0,81 %. Dans la plupart des scénarios commerciaux, pour des données massives, une erreur inférieure à 1 % est acceptable. . hyperLogLog

    Lors du comptage, HyperLogLog de Redis utilise le stockage matriciel clairsemé si le nombre de décomptes n'est pas grand, à mesure que le nombre augmente, l'espace occupé par la matrice clairsemée augmentera progressivement. changé en dense. Matrix, l'espace occupé par la matrice dense est fixe, environ 12 Ko d'octets.

    Grâce au type de données hyperLoglog, vous pouvez utiliser pfadd pour ajouter de nouveaux éléments aux statistiques de cardinalité, vous pouvez utiliser pfcount pour obtenir le nombre approximatif de cardinalités stockées dans la structure hyperLogLog, et vous pouvez également utiliser hypermerge pour fusionner plusieurs hyperLogLogs dans une seule structure hyperLogLog, afin que le numéro de base combiné puisse être facilement obtenu.

    La caractéristique d'hyperLogLog est que le processus statistique n'enregistre pas d'éléments indépendants, prend très peu de mémoire et est très adapté au comptage de données massives. Dans les systèmes de grande et moyenne taille, le type de données hyperLogLog peut être utilisé pour compter le nombre de visiteurs uniques par jour ou par mois, ou pour compter le nombre de termes indépendants recherchés par un grand nombre d'utilisateurs.

    Recommandations d'apprentissage associées :

    Laravel

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