
Penggunaan Redis yang hebat dalam baris gilir mesej
Baris gilir mesej ialah seni bina terpisah yang biasa digunakan untuk menghantar mesej tak segerak antara aplikasi. Dengan menghantar mesej ke baris gilir, pengirim boleh terus melaksanakan tugas lain tanpa menunggu balasan daripada penerima. Dan penerima boleh mendapatkan mesej daripada baris gilir dan memprosesnya pada masa yang sesuai.
Redis ialah pangkalan data dalam memori sumber terbuka yang biasa digunakan dengan prestasi tinggi dan keupayaan storan berterusan. Dalam baris gilir mesej, struktur data berbilang Redis dan prestasi cemerlang menjadikannya pilihan yang ideal. Artikel ini akan memperkenalkan penggunaan hebat Redis dalam baris gilir mesej dan memberikan contoh kod yang sepadan.
Melalui struktur data Senarai Redis, kami boleh melaksanakan baris gilir mudah. Berikut ialah contoh kod untuk pengeluar menghantar mesej ke baris gilir dan pengguna untuk mendapatkan mesej daripada baris gilir:
Kod pengeluar:
import redis
redis_host = 'localhost'
redis_port = 6379
queue_name = 'my_queue'
def produce_message(message):
r = redis.Redis(host=redis_host, port=redis_port)
r.lpush(queue_name, message)
message = 'Hello, Redis!'
produce_message(message)Kod pengguna:
import redis
redis_host = 'localhost'
redis_port = 6379
queue_name = 'my_queue'
def consume_message():
r = redis.Redis(host=redis_host, port=redis_port)
message = r.rpop(queue_name)
if message:
print(f'Received message: {message.decode()}')
else:
print('No message in the queue.')
consume_message()import redis
redis_host = 'localhost'
redis_port = 6379
channel_name = 'my_channel'
message = 'Hello, subscribers!'
def publish_message():
r = redis.Redis(host=redis_host, port=redis_port)
r.publish(channel_name, message)
publish_message()import redis
redis_host = 'localhost'
redis_port = 6379
channel_name = 'my_channel'
def handle_message(message):
print(f'Received message: {message["data"].decode()}')
def subscribe_channel():
r = redis.Redis(host=redis_host, port=redis_port)
p = r.pubsub()
p.subscribe(channel_name)
for message in p.listen():
if message['type'] == 'message':
handle_message(message)
subscribe_channel()import redis
import time
redis_host = 'localhost'
redis_port = 6379
delayed_queue_name = 'my_delayed_queue'
message = 'Hello, delayed queue!'
delay_time = time.time() + 10 # 10秒延迟
def produce_message(message, delay_time):
r = redis.Redis(host=redis_host, port=redis_port)
r.zadd(delayed_queue_name, {message: delay_time})
produce_message(message, delay_time)import redis
import time
redis_host = 'localhost'
redis_port = 6379
delayed_queue_name = 'my_delayed_queue'
def consume_message():
r = redis.Redis(host=redis_host, port=redis_port)
current_time = time.time()
messages = r.zrangebyscore(delayed_queue_name, 0, current_time)
if messages:
for message in messages:
print(f'Received message: {message.decode()}')
r.zrem(delayed_queue_name, message)
else:
print('No message in the delayed queue.')
consume_message()Atas ialah kandungan terperinci Penggunaan hebat Redis dalam baris gilir mesej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Perisian pangkalan data yang biasa digunakan
Apakah pangkalan data dalam memori?
Yang manakah mempunyai kelajuan bacaan yang lebih pantas, mongodb atau redis?
Cara menggunakan redis sebagai pelayan cache
Bagaimana redis menyelesaikan ketekalan data
Bagaimanakah mysql dan redis memastikan konsistensi penulisan dua kali?
Apakah data yang biasanya disimpan oleh redis cache?
Apakah 8 jenis data redis