Maison > base de données > Redis > le corps du texte

Parlons en profondeur des 5 types de données de base dans Redis

青灯夜游
Libérer: 2021-11-23 18:56:55
avant
2308 Les gens l'ont consulté

Cet article vous donnera une compréhension détaillée des 5 types de données de base dans Redis (String, List, Set, Hash, Zset ordonné ensemble). J'espère qu'il vous sera utile !

Parlons en profondeur des 5 types de données de base dans Redis

Introduction à la structure de données Redis

Pour Redis, toutes les clés sont des chaînes. Lorsque nous parlons de structures de données de base, nous discutons des types de données pour stocker les valeurs, qui comprennent principalement 5 types de données courants : String, List, Set, Zset et Hash. [Recommandations associées : Tutoriel vidéo Redis]

Parlons en profondeur des 5 types de données de base dans Redis

contient une chaîne non ordonnée. Une collection de chaînes, comprenant des méthodes de base pour voir s'il y a ajout, acquisition et suppression ; elle comprend également le calcul de l'intersection, de l'union, de la différence, etc.Ne contient aucune valeur-clé paires Une table de hachage ordonnéecontient des méthodes pour ajouter, obtenir et supprimer un seul élémentTout comme un hachage, elle est utilisée pour stocker des paires clé-valeurentre les membres d'une chaîne et fractions à virgule flottante Cartographie ordonnée ; l'ordre des éléments est déterminé par la taille du score ; les méthodes d'inclusion incluent l'ajout, l'obtention, la suppression d'un seul élément et l'obtention d'éléments en fonction de la plage de scores ou du membre
Type de structure La valeur stockée dans la structure Les capacités de lecture et d'écriture de la structure
Chaîne de chaîne peut être une chaîne, un nombre entier ou un nombre à virgule flottante opérer sur la chaîne entière ou une partie de la chaîne ; effectuer une opération d'incrémentation ou de décrémentation sur un nombre entier ou à virgule flottante
Liste liste une liste chaînée ; chaque Chaque nœud contient une chaîne Effectuez des opérations push et pop aux deux extrémités de la liste chaînée, lisez un ou plusieurs éléments ; recherchez ou supprimez des éléments en fonction de la valeur ;
Set collection
Hash hash
Ensemble ordonné Zset

Explication détaillée de la structure de données de base

Caractères chaîne Chaîne

La chaîne est le type de données le plus basique dans Redis, une clé correspond à une valeur.

Le type String est binaire sûr, ce qui signifie que la chaîne redis peut contenir n'importe quelle donnée. Tels que des nombres, des chaînes, des images jpg ou des objets sérialisés.

  • Commande utilisant
Commande Brève description Utilisation de GETObtenir la valeur stockée dans la clé donnéeGET nom SET Ensemble la valeur stockée dans la clé donnée SET nom valeurDELSupprimer la valeur stockée dans la clé donnéeDEL nomINCRAugmente la valeur stockée par la clé de 1 INCR keyDECRDiminuer la valeur stockée par la clé de 1DECR keyINCRBYAugmenter la valeur stockée par la clé d'un entierINCRBY montant de la cléDECRBY stockage des clés La valeur moins le nombre entierMontant de la clé DECRBY
  • Exécution de la commande
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> get counter
"2"
127.0.0.1:6379> incr counter
(integer) 3
127.0.0.1:6379> get counter
"3"
127.0.0.1:6379> incrby counter 100
(integer) 103
127.0.0.1:6379> get counter
"103"
127.0.0.1:6379> decr counter
(integer) 102
127.0.0.1:6379> get counter
"102"
Copier après la connexion
  • Scénario pratique
    • Cache : Scénario d'utilisation classique, mettez des informations communes, des chaînes, des images ou des vidéos et d'autres informations dans Redis, Redis sert de couche de cache et MySQL sert de Couche de persistance, réduisez la pression de lecture et d'écriture de MySQL.
    • Counter : redis est un modèle monothread. Une commande ne sera exécutée que lorsque la suivante sera exécutée. En même temps, les données peuvent être transférées vers d'autres sources de données en une seule étape.
    • session : Une solution courante est spring session + redis pour réaliser le partage de session,

List list

List dans Redis est en fait une liste chaînée (Redis utilise une liste chaînée à double extrémité pour implémenter Liste).

En utilisant la structure Liste, nous pouvons facilement implémenter la dernière fonction de mise en file d'attente des messages (telle que TimeLine de Sina Weibo). Une autre application de List est la file d'attente de messages. Vous pouvez utiliser l'opération PUSH de List pour stocker des tâches dans la liste, puis le thread de travail utilise l'opération POP pour supprimer les tâches à exécuter. "Utilisation de la commande"

Valeur clé RPUSH
  • LPUSH
Poussez la valeur donnée vers l'extrémité gauche de la liste
Valeur de la clé LPUSHClé RPOPlpush+rpop=Queue(queue)Exécution de la commandeWeibo TimeLine
RPOPInsérez une valeur à l'extrémité droite de la liste et renvoyez la valeur affichée
LPOP de la liste Pop une valeur à l'extrémité gauche et renvoie la valeur sautée Touche LPOP
LRANGE Obtenez toutes les valeurs de la liste dans la plage donnéeTouche LRANGE 0 -1
LINDEX Obtenez la liste par éléments d'index dans . Vous pouvez également utiliser des indices négatifs, -1 représentant le dernier élément de la liste, -2 représentant l'avant-dernier élément de la liste, et ainsi de suite. Index des clés LINEX
Conseils d'utilisation des listeslpush+lpop=Stack(stack)
lpush+ltrim=Capped Collection (collection limitée)lpush +brpop=Message Queue (Message Queue)
127.0.0.1:6379> lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "mem"
2) "ls"
3) "ll"
4) "2"
5) "1"
127.0.0.1:6379> lindex mylist -1
"1"
127.0.0.1:6379> lindex mylist 10        # index不在 mylist 的区间范围内
(nil)
Copier après la connexion
Scénario pratique
 : quelqu'un publie un Weibo, utilise lpush pour l'ajouter à la chronologie et afficher de nouvelles informations sur la liste.
    • Message Queue
    • Set Collection
  • Redis' Set est une collection non ordonnée de type String. Les membres de l'ensemble sont uniques, ce qui signifie que 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).
    • Utilisation de la commande
    • Commande
    Brève description
Utilisation

SADD

Ajouter un ou plusieurs membres à la collection

SADD valeur clé
  • SCARD
Obtenez le nombre de membres de l'ensembleSCARD keySMEMBER key memberExécution de la commande Scénario réel Tags J'aime, ou clics, favoris, etc. peuvent être placés dans un ensemble à implémenter
SMEMBERRenvoyer tous les membres de l'ensemble
SISMEMBERDéterminer si l'élément membre est membre de la clé d'ensemble Membre clé SISMEMBER
Pour d'autres opérations d'ensemble, veuillez vous référer icihttps://www.runoob.com/redis/redis-sets.html
127.0.0.1:6379> sadd myset ycf ycf1 xiao ycf
(integer) 3
127.0.0.1:6379> smember myset
1) "xiao"
2) "ycf1"
3) "ycf"
127.0.0.1:6379> sismember myset ycf
(integer) 1
Copier après la connexion
(tag), ajoutez un tag à l'utilisateur, ou l'utilisateur ajoute un tag au message, afin que ceux qui ont le même tag ou des tags similaires puissent recommander des choses ou des personnes à suivre.

Hash hash

  • Le hachage Redis est un champ de type chaîne (champ) et une valeur (valeur) Tables de mappage , les hachages sont particulièrement adaptés au stockage d'objets. "Utilisation de la commande" HSET clé de hachage sous-clé1 valeur1
    HGET
    • Obtenir la valeur de la clé de hachage spécifiée
    • HGET hash-key key1
    • HGETALL
    • Obtenir toutes les paires clé-valeur contenues dans le hachage
  • HGETALL hash-key

HDEL

si donnée la clé existe dans le hachage, puis supprimez cette clé

HDEL hash-key sub-key1
    • 命令执行
    127.0.0.1:6379> hset user name1 ycf
    (integer) 1
    127.0.0.1:6379> hset user email1 ycf@163.com
    (integer) 1
    127.0.0.1:6379> hgetall user
    1) "name1"
    2) "ycf"
    3) "email1"
    4) "ycf@163.com"
    127.0.0.1:6379> hget user user
    (nil)
    127.0.0.1:6379> hget user name1
    "ycf"
    127.0.0.1:6379> hset user name2 xiaoycf
    (integer) 1
    127.0.0.1:6379> hset user email2 xiaoycf@163.com
    (integer) 1
    127.0.0.1:6379> hgetall user
    1) "name1"
    2) "ycf"
    3) "email1"
    4) "ycf@163.com"
    5) "name2"
    6) "xiaoycf"
    7) "email2"
    8) "xiaoycf@163.com"
    Copier après la connexion
    • 实战场景
      • 缓存: 能直观,相比string更节省空间,的维护缓存信息,如用户信息,视频信息等。

    Zset有序集合

    Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

    有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

    • 命令使用
    命令简述使用
    ZADD将一个带有给定分值的成员添加到哦有序集合里面ZADD zset-key 178 member1
    ZRANGE根据元素在有序集合中所处的位置,从有序集合中获取多个元素ZRANGE zset-key 0-1 withccores
    ZREM如果给定元素成员存在于有序集合中,那么就移除这个元素ZREM zset-key member1

    更多命令请参考这里

    https://www.runoob.com/redis/redis-sorted-sets.html

    • 命令执行
    127.0.0.1:6379> zadd myscoreset 100 ycf 90 xiaoycf
    (integer) 2
    127.0.0.1:6379> ZRANGE myscoreset 0 -1
    1) "xiaoycf"
    2) "ycf"
    127.0.0.1:6379> ZSCORE myscoreset ycf
    "100"
    Copier après la connexion
    • 实战场景
      • 排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。

    更多编程相关知识,请访问:编程视频!!

    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!

Étiquettes associées:
source:juejin.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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!