먼저 Redis의 List는 선입선출 규칙을 구현할 수 있는 대기열과 동일합니다
brpop을 사용하는 이유는 큐에 큐가 없으면 큐에 팝업 요소가 있거나 대기 시간이 초과될 때까지 차단되기 때문입니다.
너무 많습니다. 접속하면 서버 처리 속도가 너무 느리고, 모든 사용자가 기다리고 서버가 피드백을 하면 시간이 너무 오래 걸리고, http 연결 시간이 초과되어 서버 오류가 발생합니다.
다수의 사용자 접속 상황을 시뮬레이션하기 위해 멀티 스레딩을 사용하여 지속적으로 사물(데이터)을 큐에 넣는 클라이언트가 있습니다
서버가 있습니다 지속적으로 대기열에서 꺼내는 작업 인쇄하고 매번 2초 동안 대기 시간을 설정합니다
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)
위 내용은 redis+python을 메시지 큐로 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!