Redis ialah sistem storan nilai kunci sumber terbuka yang menyokong pelbagai struktur data dan menyediakan banyak fungsi berguna, seperti urus niaga, skrip, kitar semula LRU, dsb. Antaranya, mekanisme penerbitan/langganan Redis adalah salah satu cara penting untuk mencapai penyegerakan data masa nyata. Artikel ini akan memperkenalkan mekanisme penerbitan/langganan Redis dan menyediakan contoh senario aplikasi.
1. Mekanisme penerbitan/langganan Redis
Dalam Redis, penerbit (Penerbit) boleh menghantar mesej (Mesej) ke mana-mana saluran (Saluran), dan pelanggan (Pelanggan) Anda boleh melanggan ke satu atau lebih saluran dan menerima mesej daripada saluran tersebut. Mekanisme penerbitan/langganan ini serupa dengan siaran stesen televisyen Pelanggan boleh memilih untuk mendengar rancangan satu atau lebih stesen televisyen, dan setiap stesen televisyen boleh menyiarkan rancangan mereka kepada semua pendengar.
Berikut ialah penggunaan asas mekanisme penerbitan/langganan Redis:
SUBSCRIBE channel1 channel2 ...
PUBLISH channel message
Di mana, channel
ialah nama saluran dan message
ialah kandungan mesej yang akan dihantar.
Berikut ialah contoh kod yang menunjukkan cara menggunakan mekanisme penerbitan/langganan Redis:
import redis # 创建 Redis 客户端 client = redis.Redis(host='localhost', port=6379) # 订阅频道 ps = client.pubsub() ps.subscribe('channel') # 接收消息 for item in ps.listen(): if item['type'] == 'message': print(item['channel'], item['data'])
2. Contoh aplikasi
Di bawah ini kami memperkenalkan pelaksanaan data masa nyata menggunakan contoh Redis Synchronous. Pertimbangkan ruang sembang dalam talian di mana berbilang pengguna boleh menghantar mesej dan menerima mesej daripada pengguna lain. Untuk mencapai penyegerakan data masa nyata, kami boleh menggunakan mekanisme penerbitan/langganan Redis. Langkah pelaksanaan khusus adalah seperti berikut:
chat_messages
. import redis # 创建 Redis 客户端 client = redis.Redis(host='localhost', port=6379) # 用户发送消息 message = 'Hello world!' client.rpush('chat_messages', message)
chat_room
melalui Redis. import redis import threading # 创建 Redis 客户端 client = redis.Redis(host='localhost', port=6379) # 工作线程,从队列中读取消息并发布到频道中 def worker(): while True: message = client.lpop('chat_messages') if message: client.publish('chat_room', message) # 启动工作线程 t = threading.Thread(target=worker) t.start()
chat_room
untuk menerima mesej yang dihantar oleh pengguna lain. import redis # 创建 Redis 客户端 client = redis.Redis(host='localhost', port=6379) # 订阅频道并接收消息 ps = client.pubsub() ps.subscribe('chat_room') for item in ps.listen(): if item['type'] == 'message': print(item['data'])
Melalui contoh ini, kita dapat melihat bahawa adalah sangat mudah untuk menggunakan mekanisme penerbitan/langganan Redis untuk mencapai penyegerakan data masa nyata. Anda hanya perlu menyimpan mesej dalam baris gilir, kemudian mulakan urutan pekerja untuk menerbitkannya ke saluran, dan kemudian pengguna melanggan saluran untuk menerima mesej.
Ringkasan
Mekanisme penerbitan/langganan Redis ialah cara penting untuk mencapai penyegerakan data masa nyata Ia boleh melaksanakan fungsi dengan mudah seperti penghantaran mesej dan pemberitahuan acara dalam sistem yang diedarkan. Dalam aplikasi praktikal, penerbit dan pelanggan boleh digunakan pada nod yang berbeza untuk mencapai ketersediaan tinggi dan keperluan pengimbangan beban. Apabila menggunakan mekanisme penerbitan/langganan Redis, anda perlu memberi perhatian untuk melindungi keselamatan dan mengelakkan risiko seperti langganan dan penerbitan tanpa kebenaran.
Atas ialah kandungan terperinci Kaedah Redis dan contoh aplikasi untuk penyegerakan data masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!