Rumah > pangkalan data > Redis > Cara menggunakan redis+python sebagai baris gilir mesej

Cara menggunakan redis+python sebagai baris gilir mesej

WBOY
Lepaskan: 2023-06-03 18:24:01
ke hadapan
1895 orang telah melayarinya

1. Gunakan jenis Senarai redis digabungkan dengan lpush dan brpop untuk melaksanakan

Pengenalan

  • Pertama sekali, Senarai redis adalah bersamaan dengan baris gilir , yang boleh melaksanakan masuk dahulu, keluar dahulu Peraturan

  • menggunakan brpop kerana apabila tiada apa-apa dalam baris gilir, ia akan menyekat sehingga terdapat elemen popable dalam baris gilir atau masa tunggu habis

Masalah Simulasi:

  • Terdapat terlalu banyak akses dan kelajuan pemprosesan pelayan terlalu perlahan Jika pelayan memberi maklum balas selepas itu menunggu setiap pengguna, masa terlalu lama, sambungan http tamat, dan ralat pelayan berlaku.

Proses pelaksanaan simulasi:

  • Terdapat pelanggan yang sentiasa meletakkan sesuatu (data) ke dalam baris gilir, menggunakan multi-threading untuk mensimulasikan bilangan pengguna yang besar Situasi akses

  • Terdapat pelayan yang terus mengeluarkan cetakan daripada baris gilir dan menetapkan masa tidur untuk setiap cetakan kepada 2 saat

pengenalan Struktur Senarai redis

key [value, value]
key 代表List的名字, [value, ...] 是值
Salin selepas log masuk

Client 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()
Salin selepas log masuk

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)
Salin selepas log masuk

Semakan masalah

Kami telah berkata sebelum ini ada masalah menyekat terlalu lama dan memutuskan sambungan Masalah diselesaikan dengan cara

: merawat sambungan sebagai fungsi, menangkap ralat dan menyambung semula apabila masalah berlaku.

rreeee

Atas ialah kandungan terperinci Cara menggunakan redis+python sebagai baris gilir mesej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan