Maison  >  Article  >  base de données  >  Redis : un chef-d'œuvre de solutions de stockage de données hautes performances

Redis : un chef-d'œuvre de solutions de stockage de données hautes performances

PHPz
PHPzoriginal
2023-11-07 15:15:30590parcourir

Redis : un chef-dœuvre de solutions de stockage de données hautes performances

Redis, le nom complet de Remote Dictionary Server, est une solution open source de stockage de bases de données clé-valeur hautes performances, développée par Salvatore Sanfilippo, qui peut prendre en charge une variété de structures de données, telles que des chaînes, des listes, des tables de hachage. , ensembles et rassemblement ordonné. Dans le domaine Internet, confronté à un trafic important et à des demandes simultanées élevées de lecture et d'écriture, Redis est devenu une solution de stockage de données représentative grâce à ses bonnes performances et sa configuration flexible.

Redis a de bonnes performances par rapport à d'autres bases de données relationnelles courantes (telles que MySQL), principalement en raison de ses différentes méthodes de stockage et de traitement des données. Redis utilise la mémoire pour stocker les données, tandis que les bases de données relationnelles telles que MySQL stockent les données sur le disque dur. Étant donné que les vitesses de lecture et d’écriture de la mémoire sont beaucoup plus rapides que les opérations d’E/S du disque dur, Redis peut fournir des performances de lecture et d’écriture efficaces. De plus, Redis prend également en charge les opérations multithread, exploitant pleinement les fonctionnalités multicœurs du processeur. Il prend également en charge la réplication maître-esclave et les mécanismes Sentinel pour obtenir une haute disponibilité des données et un basculement automatique.

Ci-dessous, nous nous concentrerons sur les cinq structures de données de Redis et leur implémentation de code spécifique :

1 String

Dans Redis, le type de chaîne est le type de données le plus couramment utilisé et le plus simple, prenant en charge les opérations de chaînes générales, telles que. insérer, supprimer, modifier, etc. Le type chaîne prend également en charge certaines opérations spéciales, telles que les opérations sur les bits, l'augmentation, la diminution, etc. Voici le code pour implémenter un compteur :

# 连接Redis
import redis
r = redis.Redis(host='localhost', port=6379, db=0)

# 递增计数器
r.set('counter', 0)
r.incr('counter')

# 获取计数器的值
counter_val = r.get('counter')
print(counter_val)

2. List

Le type de liste dans Redis peut être utilisé pour stocker plusieurs valeurs, telles que des tableaux, des listes, etc. Les listes prennent également en charge les opérations de base sur les éléments, telles que l'ajout et la suppression d'éléments à la liste, l'obtention de la longueur de la liste, etc. Voici un exemple de liste simple :

# 连接Redis
import redis
r = redis.Redis(host='localhost', port=6379, db=0)

# 向列表中添加元素
r.lpush('mylist', 1)
r.lpush('mylist', 2)
r.lpush('mylist', 3)

# 获取列表的所有元素
mylist_vals = r.lrange('mylist', 0, -1)
print(mylist_vals)

3. Table de hachage

La structure de données de la table de hachage est également une structure de données fréquemment utilisée dans Redis. Ce qui est stocké dans la table de hachage est un ensemble de paires clé-valeur qui stockent les données. La table de hachage prend également en charge les opérations de base telles que l'obtention d'une valeur via une clé, la modification d'une valeur et la suppression d'une valeur-clé. Voici un exemple de table de hachage :

# 连接Redis
import redis
r = redis.Redis(host='localhost', port=6379, db=0)

# 向哈希表中添加key-value
r.hset('myhash', 'name', 'jack')
r.hset('myhash', 'age', 20)
r.hset('myhash', 'sex', 'male')

# 获取哈希表的某个key-value
name_val = r.hget('myhash', 'name')
print(name_val)

# 获取哈希表所有的key-value
all_vals = r.hgetall('myhash')
print(all_vals)

4. Ensembles

Les ensembles dans Redis sont similaires aux ensembles en Python et peuvent stocker plusieurs éléments non ordonnés. Les ensembles prennent en charge l'ajout, la suppression, la recherche et les opérations telles que l'intersection, l'union et la différence des éléments de l'ensemble. Voici un exemple d'ensemble :

# 连接Redis
import redis
r = redis.Redis(host='localhost', port=6379, db=0)

# 向集合中添加元素
r.sadd('myset', 1)
r.sadd('myset', 2)
r.sadd('myset', 3)

# 获取集合中所有元素
myset_vals = r.smembers('myset')
print(myset_vals)

5. Ensemble ordonné

Un ensemble ordonné est similaire à un ensemble et est également composé de plusieurs éléments. Mais dans un ensemble ordonné, chaque élément est associé à un score, et les éléments peuvent être triés par score. Les ensembles triés prennent également en charge l'ajout, la suppression, la recherche et les opérations telles que l'intersection, l'union et la différence d'éléments. Voici un exemple d'ensemble ordonné :

# 连接Redis
import redis
r = redis.Redis(host='localhost', port=6379, db=0)

# 向有序集合中添加元素
r.zadd('mysortedset', {'a': 1, 'b': 2, 'c': 3})

# 按照元素分数的升序获取元素
all_vals = r.zrange('mysortedset', 0, -1)
print(all_vals)

Les cinq structures de données ci-dessus sont les structures de données les plus couramment utilisées dans Redis. Elles sont très susceptibles d'être utilisées dans le développement réel. Le code de cet article n'est qu'un exemple simple. Les développeurs doivent l'utiliser de manière flexible en fonction de scénarios d'application spécifiques. Bien entendu, en plus des cinq structures de données ci-dessus, Redis prend également en charge d'autres structures de données, telles que les bitmaps, les HyperLogLogs, etc. Ces structures de données sont également très utiles dans certaines situations spécifiques.

En bref, Redis est devenu une solution de stockage de données hautes performances populaire en tirant pleinement parti de la mémoire, en prenant en charge la lecture et l'écriture multithread, en fournissant une variété de structures de données et des scénarios d'application riches.

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:
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