Rumah > pangkalan data > Redis > teks badan

Penggunaan hebat Redis dalam baris gilir mesej

WBOY
Lepaskan: 2023-11-07 16:26:04
asal
604 orang telah melayarinya

Penggunaan hebat Redis dalam baris gilir mesej

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.

  1. Melaksanakan baris gilir mudah

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

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()
Salin selepas log masuk
  1. melaksanakan corak penerbitan/langganan

Redis Model terbitkan/langgan boleh dilaksanakan dengan menggunakan fungsi Pub/Subnya. Berikut ialah contoh kod untuk penerbit menerbitkan mesej ke saluran tertentu dan menerima mesej oleh berbilang pelanggan:

Kod penerbit:

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

Kod pelanggan:
    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()
    Salin selepas log masuk
  1. Melaksanakan giliran kelewatan

A delay ialah Senario aplikasi biasa, digunakan untuk mengendalikan tugasan yang perlu dilaksanakan selepas tempoh masa tertentu. Melalui struktur data Set Diisih Redis, kami boleh melaksanakan baris gilir kelewatan yang mudah. Berikut ialah contoh kod di mana pengeluar meletakkan mesej dalam baris gilir kelewatan dan pengguna mendapat mesej selepas masa tertentu:

Kod pengeluar:

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

Kod pengguna:

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()
Salin selepas log masuk
Melalui contoh kod di atas, kita boleh lihat Ketahui tentang penggunaan hebat Redis dalam baris gilir mesej. Dengan menggunakan struktur data dan fungsi Redis, kami boleh melaksanakan fungsi baris gilir mesej biasa dengan mudah seperti baris gilir mudah, corak terbitkan/langganan dan baris gilir penangguhan. Prestasi tinggi dan kebolehskalaan Redis juga menjadikannya penyelesaian baris gilir mesej yang ideal. 🎜

Atas ialah kandungan terperinci Penggunaan hebat Redis dalam baris gilir mesej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!