Belirli zamanlı işlemler yapılırken, sonuçlar hakkında geri bildirim almamız gerekir. Örneğin, siparişler süresi bittikten sonra otomatik olarak silinir, siparişler birkaç gün sonra otomatik olarak övülür, ödenmemiş siparişler 15 dakika sonra kapanır vb.; bunlar bazı zamanlamalı görev çerçeveleri veya anket yöntemleriyle tamamlanabilir. Bu makale, iş gereksinimlerini tamamlamak için Redis gelişmiş özellik önbellek son bitiş olayı bildirim mekanizmasını .NET/C# kodu ile birleştirerek kullanır.
Giriş
Kullanım senaryoları: 1. Ödeme işlerinde ödenmemiş siparişler otomatik olarak kapanır 2. Önbelleğin son kullanma bitiş hatırlatıcıları
Genel olarak, zamanlama hizmetini ödenmemiş siparişlerin otomatik kapanmasını işlemek için kullanabiliriz; örneğin her dakika arayüzü arayarak ödenmemiş ve süresi dolan siparişleri işlemek, ancak bu durumda bilgisayar performansını tüketir, sipariş olmasa bile her dakika işlenecek ve sipariş işleme süresinin maksimum gecikmesi 59 saniye olur, zamanlama servisi her zaman kullanılabilir olmalıdır
Peki, ödememiş ve süresi dolan siparişler düşük gecikmeli işlemler olduğunda ne yapmak istiyoruz, Redis'in önbellek son kullanma mekanizmasını kullanarak aboneliği itebiliriz.
Redis aboneliği
redis.conf yapılandırma dosyasında notify-keyspace-events Ex'i değiştirin
Kupa kaynaklarını korumak için, etkinlik bildirimleri varsayılan olarak açılmaz ve varsayılan notify-keyspace-events şeklindedir
# K anahtar alanı bildirimi, <db>ön ekte __keyspace@__ # E anahtarı olay bildirimi, <db>ön ekte __keysevent@__ # g del, expipre, rename ve diğer türde genel komutlar, ... # $string komut # l List komutu #s Komutu ayar # h Hash komutu # z emredildi komut ayarla. # x Sona erme olayı (bir anahtar her süresi dolduğunda oluşturulur) # e tahliye olayı (bellek dolduğunda anahtar temizlendiğinde oluşturulur) # Bir g$lshzxe takma ad, yani "AKE" tüm olaylar demektir
notify-keyspace-events "kx" bir anahtar için geçersiz hale getirme olaylarını izlemek istediğinizi gösterir. Parametreyi AKE dizesine ayarlamak, her türlü bildirim göndermek anlamına gelir.
Bilgisayarıma redis'i servis olarak yükledim, redis.windows.conf yapılandırma dosyasını değiştirdim ve redis servis yapılandırmasını yeniden başlatmam gerekti.
.NET/C# kod örneği
Paket şöyledir:
çağırmak
Redis-cli ile bir önbellek yazmayı deneyelim.
Aslında, redis-cli üzerinden aşağıdaki komutu çalıştırarak önbellek son kullanma bildirimlerine de abone olabilirsiniz:
N istemci önbellek son kullanma bitimi bildirimine abone olduğunda, redis aşağıdaki şekilde gösterildiği gibi sadece bir istemciyi değil, aynı son kullanma mesajını N kullanıcıya bildirecektir:
C# kaynak kodu indirme:
https://down.itsvse.com/item/17856.html
özet
Redis pub/sub güvenilmez bir mesaj mekanizmasıdır, bilgi depolamıyor, sadece çevrimiçi yönlendiriyor ve kesinlikle ack onay mekanizması yok, sadece abonelik segmenti yönlendirilir, bu yüzden Keyspace Notifications de güvenilmez bir bildirim sistemi, eğer işimiz iyi bir güvenilirliğe ihtiyaç duyuyorsa, bu en iyi seçenek değildir. Genel olarak, bunu uygulamak için RabbitMQ'nun DLX'ini (Dead-Letter-Exchange) öneriyoruz; bu da gecikmeli kuyruk fonksiyonudur. Sadece Redis'in çözümü uygulaması daha kolay ve işletmesi daha ucuz. Yüksek güvenilirlik gerektirmeyen işletmeler için hâlâ çok kullanışlıdır. |