Saat melakukan operasi berjangka waktu tertentu, kami membutuhkan umpan balik tentang hasilnya. Misalnya, pesanan secara otomatis dihapus setelah kedaluwarsa, pesanan dipuji secara otomatis setelah beberapa hari, pesanan yang belum dibayar ditutup setelah 15 menit, dll., yang dapat diselesaikan menggunakan beberapa kerangka kerja tugas berjangka waktu atau metode polling. Artikel ini menggunakan mekanisme pemberitahuan peristiwa kedaluwarsa cache fitur lanjutan Redis yang dikombinasikan dengan kode .NET/C# untuk menyelesaikan persyaratan bisnis.
Perkenalan
Skenario penggunaan: 1. Dalam bisnis pembayaran, pesanan yang belum dibayar ditutup secara otomatis 2. Pengingat kedaluwarsa cache
Secara umum, kita dapat menggunakan layanan pengaturan waktu untuk memproses penutupan otomatis pesanan yang belum dibayar, seperti memanggil antarmuka setiap menit untuk memproses pesanan yang belum dibayar dan kedaluwarsa, tetapi dalam hal ini, itu akan menghabiskan kinerja komputer, bahkan jika tidak ada pesanan, itu akan diproses setiap menit, dan penundaan maksimum waktu pemrosesan pesanan adalah 59 detik, dan layanan pengaturan waktu harus selalu tersedia
Jadi apa yang ingin kita lakukan hanya ketika ada pesanan yang belum dibayar dan kedaluwarsa dengan pemrosesan latensi rendah, kita dapat menggunakan mekanisme kedaluwarsa cache Redis untuk mendorong langganan.
Langganan Redis
Ubah notify-keyspace-events Ex dalam file konfigurasi redis.conf
Untuk menyimpan sumber daya cangkir, pemberitahuan peristiwa tidak diaktifkan secara default, dan defaultnya adalah notify-keyspace-events
# K pemberitahuan ruang kunci, <db>diawali dengan __keyspace@__ # Pemberitahuan peristiwa kunci, <db>diawali dengan __keysevent@__ # g del, expipre, rename dan jenis perintah generik lainnya, ... # $string perintah # l Perintah daftar #s Atur perintah # h Perintah hash # Perintah Set yang Dipesan # Z # x Peristiwa kedaluwarsa (dibuat setiap kali kunci kedaluwarsa) # e peristiwa penggusuran (dihasilkan saat kunci dihapus saat memori penuh) # Alias g$lshzxe, jadi "AKE" berarti semua peristiwa
notify-keyspace-events "kx" menunjukkan bahwa Anda ingin memantau peristiwa pembatalan untuk kunci. Mengatur parameter ke string AKE berarti mengirim semua jenis notifikasi.
Saya menginstal redis sebagai layanan di mesin saya, memodifikasi file konfigurasi redis.windows.conf, dan perlu memulai ulang konfigurasi layanan redis agar diterapkan.
Contoh kode .NET/C#
Paketnya adalah sebagai berikut:
Memohon
Mari kita coba menulis cache dengan redis-cli.
Bahkan, Anda juga dapat berlangganan pemberitahuan kedaluwarsa cache dengan menjalankan perintah berikut melalui redis-cli:
Saat N klien berlangganan pemberitahuan peristiwa kedaluwarsa cache, redis akan memberi tahu N pengguna tentang pesan kedaluwarsa yang sama, bukan hanya salah satu klien, seperti yang ditunjukkan pada gambar di bawah ini:
Unduhan kode sumber C#:
https://down.itsvse.com/item/17856.html
ringkasan
Redis pub/sub adalah mekanisme pesan yang tidak dapat diandalkan, tidak akan menyimpan informasi, hanya akan meneruskan secara online, dan pasti tidak ada mekanisme konfirmasi ack, dan hanya segmen langganan yang akan diteruskan, jadi Keyspace Notifications juga merupakan sistem notifikasi yang tidak dapat diandalkan, jika bisnis kita membutuhkan keandalan yang baik, maka ini bukan pilihan terbaik. Umumnya, kami merekomendasikan DLX (Dead-Letter-Exchange) RabbitMQ untuk mengimplementasikannya, yang merupakan fungsi antrean tertunda. Hanya saja solusi Redis lebih mudah diimplementasikan dan lebih murah untuk dioperasikan. Masih sangat nyaman bagi bisnis yang tidak membutuhkan keandalan tinggi. |