Maison >base de données >Redis >Application de Redis en Python

Application de Redis en Python

PHPz
PHPzoriginal
2023-06-20 16:32:251265parcourir

Redis est un système de stockage clé-valeur open source et hautes performances, couramment utilisé dans le cache, la file d'attente de messages, le compteur et d'autres scénarios. En tant que langage de script concis et efficace, Python est également largement utilisé dans le traitement en arrière-plan du Web, l'analyse et l'exploration de données, l'apprentissage automatique, l'intelligence artificielle et d'autres domaines. Cet article discutera de l'application de Redis en Python, y compris l'installation de Redis, l'utilisation du module client Python Redis et des cas d'application spécifiques.

1. Installation de Redis

  1. Téléchargez le fichier d'installation
    Le site officiel de Redis fournit le code source et la version précompilée. Si vous choisissez la version précompilée, vous pouvez directement télécharger la dernière version.
  2. Décompressez et compilez
    Une fois le téléchargement terminé, décompressez-le dans le répertoire spécifié. Utilisez la commande make pour compiler Redis en fichiers exécutables, scripts de démarrage, etc. Sur les systèmes Linux, vous pouvez utiliser la commande suivante :

$ tar xzf redis-5.0.3.tar.gz
$ cd redis-5.0.3
$ make

  1. Démarrer le serveur Redis
    Une fois la compilation terminée, vous pouvez utiliser la commande redis-server pour démarrer le serveur Redis. Le port d'écoute par défaut est 6379 : #🎜🎜. #
  2. #🎜 🎜#$ src/redis-server

Test de connexion
    Vous pouvez utiliser la commande redis-cli pour vous connecter au serveur redis pour le fonctionnement. Par exemple, utilisez la commande SET pour définir une paire clé-valeur :

  1. $ src/redis-cli
127.0.0.1:6379> 🎜🎜#OK

127.0.0.1:6379> GET mykey
"Bonjour Redis"

2. Utilisation du module client Python Redis

Pour plus de commodité en Python Avec Redis, vous pouvez utiliser le module redis-py comme bibliothèque client pour Redis. Vous pouvez utiliser la commande pip pour installer :

$ pip install redis

Connectez-vous au serveur Redis

Vous devez d'abord créer un objet Redis pour connectez-vous au serveur Redis. Vous pouvez utiliser le code suivant :

  1. import redis
  2. rds = redis.Redis(host='localhost', port=6379, db=0)
# 🎜🎜 #Où l'hôte et le port sont respectivement l'adresse et le numéro de port du serveur Redis, db représente le numéro de la base de données Redis et la valeur par défaut est 0.


Opération sur les données

À l'aide d'objets Redis, vous pouvez définir, obtenir, supprimer des paires clé-valeur et d'autres opérations. Par exemple :

  1. rds.set('name', 'Alice')
    name = rds.get('name')
  2. print(name) # Sortie:b'Alice'

Parmi eux, la méthode set est utilisée pour définir la paire clé-valeur et la méthode get est utilisée pour obtenir la paire clé-valeur. Il convient de noter que le type de données renvoyé par la méthode get est en octets et doit être converti en chaîne à l'aide de la méthode decode.

Opération par lots

Afin d'améliorer l'efficacité, Redis prend en charge les opérations par lots. Grâce au pipeline, plusieurs opérations peuvent être regroupées et envoyées au serveur Redis, réduisant ainsi la surcharge et la latence du réseau. Par exemple :

  1. pipe = rds.pipeline()
    pipe.set('key1', 'value1')
  2. pipe.set('key2', 'value2')
pipe.set('key3', 'value3')

pipe.execute()


Pub/Sub mode
Redis fournit un modèle de publication/abonnement pour la transmission de messages. La bibliothèque client Python Redis fournit également les API correspondantes. Par exemple :

  1. import time
    pubsub = rds.pubsub()
  2. pubsub.subscribe('channel')
rds.publish('channel ' , 'Bonjour')

time.sleep(1) # Attendez 1 seconde
msg = pubsub.get_message()
print(msg) # Sortie : {'type': 'message ' , 'channel' : b'channel', 'data' : b'Bonjour'}

Parmi eux, la méthode d'abonnement signifie s'abonner à une chaîne et la méthode de publication signifie publier un message. Utilisez la méthode get_message pour obtenir le message.

3. Cas d'application spécifiques

Cache

La bibliothèque client Python Redis peut être utilisée pour mettre en cache les données couramment utilisées et accélérer la vitesse de réponse de applications Web. Par exemple :

  1. import time
    import redis
  2. class Cache:
def __init__(self):
    self.rds = redis.Redis(host='localhost', port=6379, db=0)

def get(self, key):
    val = self.rds.get(key)
    if val:
        return val.decode()
    return None

def set(self, key, val, ttl=60):
    self.rds.set(key, val, ex=ttl)

cache = Cache()
val = cache .get('key')
if not val:

# 从数据库中查询数据
val = 'value'
cache.set('key', val, ttl=60)

print(val)

La classe Cache encapsule l'implémentation du cache Redis, en utilisant get et Les méthodes set peuvent obtenir ou définir des données de cache. Interrogez le cache avant d'obtenir les données. Si elles n'existent pas dans le cache, lisez les données de la base de données et mettez-les en cache.

Verrouillage distribué

Le verrouillage distribué est un mécanisme de synchronisation utilisé pour éviter la concurrence des ressources lorsque plusieurs processus/threads/nœuds collaborent. La bibliothèque client Python Redis peut être utilisée pour implémenter des verrous distribués. Par exemple :

  1. import time
    import redis
  2. class Lock:
def __init__(self):
    self.rds = redis.Redis(host='localhost', port=6379, db=0)
    self.locked = False

def acquire(self, lockname, ttl=60):
    identifier = str(time.time())
    self.locked = self.rds.setnx(lockname, identifier)
    if self.locked:
        self.rds.expire(lockname, ttl)
    return self.locked

def release(self, lockname):
    if self.locked:
        self.rds.delete(lockname)

lock = Lock()
if lock . acquire('mylock'):

# 处理业务逻辑...
lock.release('mylock')

La classe Lock encapsule l'implémentation de verrous distribués, et les méthodes d'acquisition et de libération peuvent être utilisées pour acquérir ou libérer des verrous. Lors de l'acquisition d'un verrou, renvoyez False si le verrou est déjà occupé ; si le verrou n'est pas occupé, acquérez le verrou et définissez le délai d'expiration.


Pour résumer, Redis est largement utilisé en Python et peut être utilisé dans le cache, les verrous distribués, les files d'attente de messages, les compteurs et d'autres scénarios. La bibliothèque client Python Redis fournit également une API simple et facile à utiliser pour des opérations pratiques sur les donné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!

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