Maison > Article > base de données > 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 commanderedis-cli
pour démarrer le client Redis. La commande de démarrage complète estredis-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 :
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 queuser: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 abcexists 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 retourtype(key)
flushdb
Supprimer toutes les clés de toutes les bases de donnéesflushall
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.)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
Lot lecturemset 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 key
Longueur de la chaînedecrby key integer
2. Double paire clé-valeur Hashappend key value
Type 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.
Obtenir la valeur basée sur le champ
Obtenir toutes les valeurs basées sur plusieurs champshset key field value
Obtenir 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émenthkeys 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 increment
Suppression des données de collecte avec de grandes quantités de données
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 key
Obtenir la longueur de la liste lindex key index
Obtenir les éléments de la liste par index lrange key start stop
Obtenir 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
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
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
smove source destincation member
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
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 key2
5. 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
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
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
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 scorezlexcount key,min,max
6 HyperLoglogdel 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.
pfadd key element1 element2 ... elementN
ulous dans perLogLog fusionné dans A HyperLogLogpfcount key
pfmerge destkey sourcekey1 sourcekey2 ...sourcekeyN
Plus de recommandations d'apprentissage gratuites associées :
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!