Tout d'abord, la liste de redis est équivalente à une file d'attente, qui peut implémenter la règle du premier entré, premier sorti
La raison pour laquelle brpop est utilisé est que lorsqu'il n'y a pas de file d'attente dans la file d'attente, il se bloquera jusqu'à ce qu'il y ait un élément pop-up dans la file d'attente ou jusqu'à l'expiration du délai d'attente
Trop de accès, la vitesse de traitement du serveur est trop lente, si chaque utilisateur attend et que le serveur renvoie un retour, le temps est trop long, la connexion http a expiré et une erreur de serveur s'est produite.
Il existe un client qui met continuellement des éléments (données) dans la file d'attente, en utilisant le multi-threading pour simuler la situation d'un grand nombre d'accès d'utilisateurs
Il existe un serveur qui retire continuellement les éléments de la file d'attente Imprimez et définissez le temps de veille de 2 secondes à chaque fois
key [value, value] key 代表List的名字, [value, ...] 是值
client.py
import random import threading import redis import config lock = threading.Lock() lock.acquire() lock.release() pool = redis.ConnectionPool(host=config.HOST, port=config.PORT, decode_responses=True, password=config.PASSWORD) r = redis.Redis(connection_pool=pool) # 客户往redis 中放数据 def fun1(redisObj): value = random.randint(0, 100) # 往ccc列表中存放 print("开始发送数据:", value) redisObj.lpush("print",str(value)) for i in range(100): threading.Thread(target=fun1, args=(r,)).start()
server server.py
import redis import time import config pool = redis.ConnectionPool(host=config.HOST, port=config.PORT, decode_responses=True, password=config.PASSWORD) r = redis.Redis(connection_pool=pool) # 服务端不断的取 while True: value = r.brpop("print") time.sleep(2) print(value)
import redis import time import config def get_redis(): pool = redis.ConnectionPool(host=config.HOST, port=config.PORT, decode_responses=True, password=config.PASSWORD) r = redis.Redis(connection_pool=pool) return r # 服务端不断的取 r = get_redis() while True: try: value = r.brpop("print") time.sleep(2) print(value) except Exception as e: print("等待超时重连") r = get_redis()
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!