La colonne suivante du Tutoriel Redis vous présentera les scénarios d'utilisation de 5 structures de données dans Redis. Cet article présente les 5 types de données dans Redis : String, Hash et List, Set, Sorted Set sont expliqués, les amis dans le besoin peuvent s'y référer !
1. redis Scénarios d'utilisation de la structure de données
J'ai lu le livre redisbook et je connais déjà les fonctions de base de redis Maintenant, j'ai commencé à regarder le code source de Redis la semaine dernière. L'objectif actuel est de bien comprendre la structure des données de Redis. Nous savons tous qu'il existe 5 structures de données dans Redis, alors quels sont les scénarios d'utilisation de chaque structure de données ?
Chaîne - chaîne
Hash - dictionnaire
Liste - liste
Ensemble - ensemble
Ensemble trié - ensemble ordonné
Ci-dessous, nous expliquons brièvement leurs scénarios d'utilisation respectifs :
1.String - String
La structure de données String est un simple type clé-valeur. La valeur peut non seulement être une chaîne, mais également des nombres (lorsque le type numérique peut être représenté par Long, le codage est un entier et les autres sont stockés dans sdshdr sous forme de chaînes). En utilisant le type Strings, les fonctions actuelles de Memcached peuvent être pleinement réalisées et plus efficaces. Vous pouvez également profiter de la persistance planifiée de Redis (vous pouvez choisir le mode RDB ou le mode AOF), des journaux d'opérations, de la réplication et d'autres fonctions. En plus de fournir les mêmes opérations get, set, incr, decr et autres que Memcached, Redis fournit également les opérations suivantes :
1.LEN niushuai:O(1)获取字符串长度 2.APPEND niushuai redis:往字符串 append 内容,而且采用智能分配内存(每次2倍) 3.设置和获取字符串的某一段内容 4.设置及获取字符串的某一位(bit) 5.批量设置一系列字符串的内容 6.原子计数器 7.GETSET 命令的妙用,请于清空旧值的同时设置一个新值,配合原子计数器使用
1.Hash - Dictionary
Dans Memcached, nous utilisons souvent certaines structures. les informations personnalisées sont regroupées dans une hashmap et stockées sous forme de valeur de chaîne (généralement au format JSON) après sérialisation sur le client, telles que le surnom de l'utilisateur, son âge, son sexe, ses points, etc. À ce stade, lorsque vous devez modifier l'un des éléments, vous devez généralement retirer la chaîne (JSON), puis la désérialiser, modifier la valeur d'un certain élément, puis la sérialiser en chaîne (JSON) et stocker il revient. Modifier simplement un attribut pour faire autant de choses doit être très coûteux, et cela ne convient pas aux situations où des opérations simultanées sont possibles (par exemple, deux opérations simultanées nécessitent des points de modification). La structure de hachage de Redis vous permet de modifier uniquement une certaine valeur d'attribut, tout comme la mise à jour d'un attribut dans la base de données.
存储、读取、修改用户属性
1 List——List
List est simplement une liste chaînée (redis utilise une liste chaînée à double extrémité pour implémenter List, je crois). vous avez acquis la connaissance de la structure des données. Tout le monde devrait être capable de comprendre sa structure. En utilisant la structure Liste, nous pouvons facilement implémenter des fonctions telles que le classement des dernières actualités (comme la 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 exécuter la tâche. Redis fournit également une API pour exploiter un certain segment d'éléments dans la liste. Vous pouvez directement interroger et supprimer un certain segment d'éléments dans la liste
1.微博 TimeLine 2.消息队列
Par rapport aux ensembles, les ensembles triés ajoutent un score de paramètre de poids aux éléments de l'ensemble, de sorte que les éléments de l'ensemble puissent être disposés de manière ordonnée en fonction du score. Par exemple, un ensemble trié qui stocke les notes. de la classe entière a une valeur définie. Il peut s'agir du numéro d'étudiant d'un camarade de classe et le résultat peut être son résultat à l'examen. De cette façon, lorsque les données sont insérées dans la collection, elles seront naturellement triées. De plus, les ensembles triés peuvent également être utilisés 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. Le thread de travail peut ensuite choisir d'obtenir les tâches de travail dans l'ordre inverse. de la partition. Priorisez les tâches importantes.
1. Éléments ayant du poids, tels que la liste de classement des scores utilisateur d'un jeu
2. Une structure de données relativement complexe, généralement peu utilisée dans trop de scénarios
2. d'autres fonctions Redis
1. Système de publication par abonnement
Pub/Sub signifie littéralement publication (Publier) et abonnement (Subscribe). Dans Redis, vous pouvez définir le couplage Une certaine valeur clé effectue. publication de messages et abonnement à des messages Lorsqu'un message est publié sur une valeur clé, tous les clients qui s'y abonnent recevront le message correspondant. L'utilisation la plus évidente de cette fonction est celle d'un système de messagerie en temps réel, tel qu'un chat instantané ordinaire, un chat de groupe et d'autres fonctions.
1. Transactions - Transactions
Qui a dit que NoSQL ne prend pas en charge les transactions, bien que les transactions de Redis ne fournissent pas de transactions ACID strictes (telles qu'une série de commandes soumises pour exécution à l'aide d'EXEC, si le le serveur tombe en panne pendant l'exécution, certaines commandes seront exécutées et le reste ne sera pas exécuté), mais ces transactions fournissent toujours la fonction de base de conditionnement et d'exécution des commandes (s'il n'y a pas de problème avec le serveur, une série de commandes peut être garanti (elles sont exécutées ensemble dans l'ordre et d'autres commandes client seront insérées au milieu pour l'exécution). Redis fournit également une fonction Watch. Vous pouvez surveiller une clé puis exécuter des transactions. Au cours de ce processus, si la valeur de Watched est modifiée, les transactions seront découvertes et refusées.