Azure Yönetilen Redis'te veri kaybını giderme

Bu makalede, Azure Yönetilen Redis'te gerçekleşebilecek gerçek veya algılanan veri kaybının nasıl tanılanabileceği açıklanır.

Uyarı

Bu kılavuzdaki bazı sorun giderme adımları Redis komutlarını çalıştırma ve performans ölçümlerini izleme yönergelerini içerir. Daha fazla bilgi için İlgili içerik makalelerine bakın.

Kısmi anahtar kaybı

Azure Yönetilen Redis anahtarları bellekte depoladıktan sonra rastgele silmez. Süre sonu ilkeleri, çıkarma ilkeleri veya açık anahtar silme komutları nedeniyle anahtarları kaldırır. CLI kullanarak bu komutları çalıştırın. Azure Yönetilen Redis örneğindeki birincil düğüme yazılan anahtarlar bir çoğaltmada hemen kullanılamayabilir. Veriler birincil kaynaktan replika sunucuya asenkron olarak ve engellemeden çoğaltılır.

Anahtarlar önbelleğinizden kaybolursa aşağıdaki olası nedenleri denetleyin:

Nedeni Açıklama
Anahtar süresinin dolması Anahtarlar, üzerinde ayarlanan zaman aşımları nedeniyle kaldırılır.
Anahtar tahliye Bellek yetersiz olduğunda anahtarlar kaldırılır.
Anahtar silme İstemciler açık silme komutlarını çalıştırarak anahtarları kaldırır.
Asenkron çoğaltma Veri çoğaltma gecikmeleri nedeniyle anahtarlar bir replika üzerinde mevcut değildir.

Anahtarın geçerlilik süresi bitimi

Azure Yönetilen Redis, anahtar için zaman aşımı geçtiğinde anahtarı otomatik olarak kaldırır. Redis anahtarının süre sonu hakkında daha fazla bilgi için EXPIRE komutu belgelerine bakın. Zaman aşımı değerlerini SET, SETEX, GETSET ve diğer *STORE komutlarını kullanarak da ayarlayabilirsiniz.

Kaç anahtarın süresinin dolduğunu görmek için BİlGİ komutunu kullanın. Stats bölümünde süresi dolan anahtarların toplam sayısı gösterilir. Keyspace bölümünde zaman aşımları olan anahtarların sayısı ve ortalama zaman aşımı değeri hakkında daha fazla bilgi sunun.


# Stats

expired_keys:46583

# Keyspace

db0:keys=3450,expires=2,avg_ttl=91861015336

Anahtarın kaybolmasıyla çıkarılan anahtarlardaki ani artış arasında bir bağıntı olup olmadığını görmek için önbelleğinizin tanılama ölçümlerini denetleyin.

Anahtar tahliye

Azure Yönetilen Redis'in verileri depolamak için bellek alanına ihtiyacı vardır. Gerektiğinde bellek boşaltmak için anahtarları kaldırır. BİlGİ komutundaki used_memory veya used_memory_rss değerleri yapılandırılan maxmemory ayarına yaklaştığında, Azure Yönetilen Redis önbellek ilkesine göre anahtarları bellekten çıkarma işlemini başlatır.

BİlGİ komutunu kullanarak çıkarılan anahtarların sayısını izleyin:

# Stats

evicted_keys:13224

Anahtar silme

Redis istemcileri, Anahtarları Azure Yönetilen Redis'ten kaldırmak için DEL veya HDEL komutunu çalıştırır. BİlGİ komutunu kullanarak silme işlemlerinin sayısını izleyin. DEL veya HDEL komutları çalıştırıldıysa, Commandstats bölümünde listelenir.

# Commandstats

cmdstat_del:calls=2,usec=90,usec_per_call=45.00

cmdstat_hdel:calls=1,usec=47,usec_per_call=47.00

Asenkron çoğaltma

Azure Yönetilen Redis'te yüksek erişilebilirliği etkinleştirdiğinizde, hizmet bir birincil düğüm ve en az bir replika oluşturur. Sistem, bir arka plan işlemi kullanarak verileri birincil sistemden kopya sisteme eşzamansız olarak kopyalar. Daha fazla ayrıntı için Redis çoğaltma belgelerine bakın.

Çoğaltma anlık olmadığından, istemcilerin Redis'e sık sık yazması durumunda kısmi veri kaybıyla karşılaşabilirsiniz. Örneğin, bir istemci bir anahtar kaydettikten sonra ancak arka plan süreci bunu çoğaltmadan önce birincil düğüm arızalanırsa, çoğaltma yeni birincil düğüm olduğunda anahtar kaybolur.

Anahtarlarda önemli veya tam kayıp

Çoğu veya tüm anahtarlar önbelleğinizden kaybolursa şu olası nedenleri denetleyin:

Nedeni Açıklama
Anahtar temizleme Birisi anahtarları el ile temizlemiş.
Redis örneği hatası Redis sunucusu kullanılamıyor.

Anahtar temizleme

İstemciler, Redis örneğinden tüm anahtarları kaldırmak için FLUSHDB veya FLUSHALL komutunu çağırabilir. Anahtarların temizlenip temizlenmediğini denetlemek için BİlGİ komutunu kullanın. bölümünde Commandstats komutlardan herhangi biri FLUSH çalıştırılıp çalıştırılamadığını gösterir:

# Commandstats

cmdstat_flushall:calls=2,usec=112,usec_per_call=56.00

cmdstat_flushdb:calls=1,usec=110,usec_per_call=52.00

Redis örneği hatası

Redis bir bellek içi veri deposudur. Veriler Redis önbelleğini barındıran fiziksel veya sanal makinelerde (VM) kalır. Azure Yönetilen Redis önbellekleri, bölge dayanıklı önbellekleri varsayılan olarak sağlayarak veri kaybına karşı yüksek dayanıklılık sunar. Bu önbellekteki birincil parça başarısız olduğunda, yedek parça veri sunmak için otomatik olarak devralır. Bu VM'ler hata ve güncelleştirmeler için ayrı etki alanlarında bulunur ve bu da her ikisinin de aynı anda kullanılamaz duruma gelme olasılığını en aza indirir. Büyük bir veri merkezi kesintisi yaşanırsa, VM'ler birlikte çalışmaya devam edebilir. Bu nadir durumlarda verilerinizi kaybedersiniz.

Verilerinizi bu altyapı hatalarına karşı daha iyi korumak için Redis veri kalıcılığını ve coğrafi çoğaltmayı kullanın.