Rumah  >  Artikel  >  pangkalan data  >  Kaedah Redis dan contoh aplikasi untuk melaksanakan pemprosesan log teragih

Kaedah Redis dan contoh aplikasi untuk melaksanakan pemprosesan log teragih

WBOY
WBOYasal
2023-05-11 15:30:291407semak imbas

Dengan pembangunan berterusan pengkomputeran awan dan data besar, bilangan log yang dijana dalam sistem perniagaan menjadi lebih besar dan lebih besar Cara memproses data log ini dengan cekap telah menjadi masalah mendesak untuk diselesaikan. Dalam konteks ini, pemprosesan log teragih amat penting. Redis ialah pangkalan data NoSQL yang biasa digunakan pada masa ini Artikel ini akan memperkenalkan cara Redis melaksanakan pemprosesan log teragih dan menggambarkan senario aplikasinya dengan contoh aplikasi.

1. Mengapa memilih Redis

Redis ialah sistem storan data berasaskan memori dengan kelebihan prestasi tinggi, ketersediaan tinggi dan keselarasan tinggi. Ia menyokong pelbagai struktur data, seperti rentetan, cincang, senarai, set, dsb., dan boleh memenuhi pelbagai keperluan penyimpanan data dalam sistem perniagaan. Di samping itu, Redis juga menyokong replikasi tuan-hamba, mekanisme sentinel, pengelompokan dan ciri-ciri lain untuk memastikan kebolehpercayaan data dan ketersediaan yang tinggi.

Dalam pemprosesan log, kelebihan penyimpanan memori Redis amat jelas. Storan berasaskan memori boleh memproses data dengan cepat dan menyokong senario konkurensi yang tinggi, memberikan sokongan yang baik untuk pemprosesan log yang diedarkan.

2. Redis melaksanakan pemprosesan log teragih

Redis boleh melaksanakan pemprosesan log teragih melalui mod terbitkan/langganan (Pub/Sub). Mod Pub/Sub ialah mekanisme pengedaran mesej yang menyokong siaran dan langganan mesej. Ia boleh menghantar mesej kepada berbilang pengguna untuk mencapai pemprosesan yang diedarkan. Di bawah, kami memperkenalkan secara terperinci cara menggunakan Redis untuk melaksanakan pemprosesan log teragih.

  1. Tentukan format mesej

Apabila menggunakan mod Pub/Sub, format mesej perlu ditentukan. Biasanya format json digunakan sebagai badan mesej, serupa dengan struktur berikut:

{
    "log_id": "1234",
    "log_time": "2022-01-01 00:00:00",
    "log_level": "INFO",
    "log_content": "Hello World!"
}

Antaranya, log_id ialah pengecam unik, log_time ialah masa penjanaan log, log_level ialah tahap log, dan log_content ialah log kandungan.

  1. Terbitkan log

Apabila log dijana, terbitkan mesej log ke Redis. Kodnya adalah seperti berikut:

import redis
import json

r = redis.Redis(host='localhost', port=6379)
log = {
    "log_id": "1234",
    "log_time": "2022-01-01 00:00:00",
    "log_level": "INFO",
    "log_content": "Hello World!"
}
message = json.dumps(log)
r.publish('logs', message)

Dalam kod, objek Redis pertama kali dibuat dan alamat serta nombor port pelayan Redis ditentukan. Kemudian log objek log ditakrifkan dan diserikan ke dalam rentetan json. Akhir sekali, terbitkan mesej ke saluran log melalui kaedah terbitkan.

  1. Melanggan log

Dalam sistem yang diedarkan, berbilang pengguna boleh melanggan saluran log yang sama dan memproses mesej log pada masa yang sama. Kodnya adalah seperti berikut:

import redis
import json

r = redis.Redis(host='localhost', port=6379)
pubsub = r.pubsub()
pubsub.subscribe('logs')

for item in pubsub.listen():
    if item['data'] == 'quit':
        pubsub.unsubscribe()
        print('unsubscribe')
        break
    else:
        message = item['data']
        log = json.loads(message)
        print(log)

Dalam kod, objek Redis pertama kali dibuat dan alamat serta nombor port pelayan Redis ditentukan. Kemudian objek pubsub dicipta dan melanggan saluran log melalui kaedah langgan. Gunakan kaedah dengar untuk menyekat dan menunggu mesej log Selepas menerima mesej, nyahserikannya menjadi objek json dan cetak log.

3. Contoh aplikasi

Di bawah, kami mengambil pemprosesan log pusat membeli-belah dalam talian sebagai contoh untuk menggambarkan senario aplikasi Redis melaksanakan pemprosesan log teragih.

Dalam pusat membeli-belah dalam talian, sejumlah besar data log dijana, termasuk log tingkah laku pengguna, log pesanan, log pembayaran, dsb. Data log ini perlu diproses tepat pada masanya untuk mengekstrak maklumat berharga untuk membantu peniaga mengoptimumkan operasi. Pada masa yang sama, disebabkan jumlah data log yang banyak dan kecekapan pemprosesan mesin tunggal yang rendah, pemprosesan teragih perlu diterima pakai.

Gunakan Redis untuk melaksanakan pemprosesan log yang diedarkan Proses khusus adalah seperti berikut:

  1. Pelayan pusat membeli-belah menjana log dan menerbitkannya ke Redis.
  2. Pelayan pengguna melanggan saluran log dan menerima mesej log.
  3. Pada pelayan pengguna, huraikan data log, ekstrak maklumat berharga dan simpannya dalam pangkalan data.

Sebagai contoh, apabila menerima mesej log log masuk pengguna, pelayan pengguna boleh meningkatkan bilangan log masuk pengguna sebanyak 1 dan merekodkan masa log masuk terkini pengguna.

Melalui proses di atas, sejumlah besar data log boleh diproses dengan cekap dan maklumat berharga diekstrak untuk memberikan sokongan kepada pedagang untuk mengoptimumkan operasi.

4. Ringkasan

Artikel ini memperkenalkan kaedah dan contoh aplikasi Redis untuk melaksanakan pemprosesan log teragih. Sebagai pangkalan data NoSQL yang berprestasi tinggi, ketersediaan tinggi, Redis mempunyai kelebihan yang jelas dalam storan memori dan mempunyai prestasi yang baik apabila memproses data log yang banyak. Melalui mod Pub/Sub, penerbitan dan langganan mesej boleh direalisasikan dan digunakan dalam senario pemprosesan data yang diedarkan. Pada masa yang sama, dalam aplikasi praktikal, penyelesaian pemprosesan log yang diedarkan boleh dioptimumkan lagi berdasarkan senario perniagaan tertentu untuk meningkatkan kecekapan dan kebolehpercayaan sistem.

Atas ialah kandungan terperinci Kaedah Redis dan contoh aplikasi untuk melaksanakan pemprosesan log teragih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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