Maison  >  Article  >  base de données  >  Redis : l'arme secrète pour créer des applications Web hautes performances

Redis : l'arme secrète pour créer des applications Web hautes performances

PHPz
PHPzoriginal
2023-11-07 14:18:28513parcourir

Redis : larme secrète pour créer des applications Web hautes performances

Redis : L'arme secrète pour créer des applications Web hautes performances

Avec le développement d'Internet, les performances des applications Web sont devenues un élément important de l'expérience utilisateur. Parmi eux, les performances des bases de données deviennent souvent un casse-tête pour les développeurs d’applications Web. Les bases de données traditionnelles sont sujettes à des goulots d'étranglement lorsqu'elles sont confrontées à un accès simultané élevé, ce qui entraîne des vitesses d'accès plus lentes et affecte ainsi l'expérience utilisateur. Afin de résoudre ce problème, il existe une solution de mise en cache performante qui est utilisée par de plus en plus de développeurs, à savoir Redis.

Redis (Remote Dictionary Server) est un système de stockage de structure de données en mémoire open source qui est également utilisé comme base de données. Il prend en charge une variété de structures de données différentes, telles que chaîne, hachage, liste, ensemble, ensemble trié, etc. La plus grande caractéristique de Redis est que les données sont stockées en mémoire, ce qui peut éviter des lectures et écritures fréquentes sur le disque dans les bases de données traditionnelles, améliorant ainsi considérablement la vitesse de lecture et d'écriture des données.

Alors, comment Redis aide-t-il les développeurs à créer des applications Web hautes performances ? Ci-dessous, nous présenterons certaines des armes secrètes de Redis dans le développement Web et fournirons des exemples de code spécifiques.

  1. Data Cache

Redis peut être utilisé comme serveur de cache indépendant pour stocker les données fréquemment interrogées en mémoire afin d'accélérer la lecture. En utilisant les commandes set et get de Redis, le stockage des données et la vitesse de lecture peuvent être augmentés des dizaines de fois.

Exemple de code :

import redis

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

# 从数据库中查询数据
data = db.query('SELECT * FROM table')

# 将查询结果存储到Redis中
r.set('data', data)

# 从Redis中读取数据
data = r.get('data')

# 如果Redis中不存在数据,则从数据库中读取并存储到Redis中
if not data:
    data = db.query('SELECT * FROM table')
    r.set('data', data)
  1. Verrouillage distribué

Dans les applications Web à haute concurrence, afin de maintenir la cohérence des données, certaines opérations peuvent devoir être verrouillées. Redis fournit une méthode d'implémentation de verrouillage distribuée en utilisant les commandes setnx et expire, vous pouvez efficacement éviter que plusieurs threads effectuent des opérations sensibles en même temps.

Exemple de code :

import redis
import time

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

# 加锁
def acquire_lock(lock_name, expire_time):
    while True:
        # 尝试设置锁,若设置成功则返回True
        if r.setnx(lock_name, time.time() + expire_time):
            return True
        # 当前锁已存在,判断是否已过期
        elif time.time() > float(r.get(lock_name)):
            # 获取并更新锁的过期时间
            old_value = r.getset(lock_name, time.time() + expire_time)
            if old_value and time.time() > float(old_value):
                return True
        time.sleep(0.1)

# 释放锁
def release_lock(lock_name):
    r.delete(lock_name)

# 使用分布式锁保护敏感操作
if acquire_lock('my_lock', 10):
    try:
        # 执行敏感操作
        pass
    finally:
        release_lock('my_lock')
  1. Mode de publication et d'abonnement

Redis fournit un mode de publication et d'abonnement, qui peut publier et s'abonner à des messages entre différents clients. Cette fonctionnalité peut être utilisée pour mettre en œuvre des systèmes de communication ou de diffusion en temps réel.

Exemple de code :

import redis
import time

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

# 发布消息
def publish(channel, message):
    r.publish(channel, message)

# 订阅消息
def subscribe(channel, callback):
    pubsub = r.pubsub()
    pubsub.subscribe(channel)
    for item in pubsub.listen():
        if item['type'] == 'message':
            callback(item['data'])

# 定义回调函数
def callback(message):
    print('Received message:', message)

# 发布和订阅消息
publish('channel', 'Hello Redis!')
subscribe('channel', callback)

Résumé

Redis, en tant que solution de mise en cache hautes performances, peut aider les développeurs à créer des applications Web hautes performances. Grâce à des fonctions telles que la mise en cache des données, les verrous distribués et les modèles de publication et d'abonnement, les performances et la stabilité des applications Web peuvent être efficacement améliorées. J'espère que les exemples de code ci-dessus pourront aider les lecteurs à mieux comprendre et appliquer Redis.

Matériaux de référence :

  1. Documentation officielle de Redis : https://redis.io/documentation
  2. Site Web chinois de Redis : https://www.redis.cn/

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