Redis için Azure Cache'de veri kaybı sorunlarını giderme

Bu makalede Redis için Azure Cache'de oluşabilecek gerçek veya algılanan veri kayıplarını nasıl tanılayabileceğiniz açıklanır.

Not

Bu kılavuzdaki sorun giderme adımlarından bazıları Redis komutlarını çalıştırma ve çeşitli performans ölçümlerini izleme yönergeleridir. Daha fazla bilgi ve yönergeler için Ek bilgiler bölümündeki makalelere bakın.

Kısmi anahtar kaybı

Anahtarlar bellekte depolandıktan sonra Redis için Azure Cache bu anahtarları rastgele silmez. Öte yandan süre sonu ilkelerine, çıkarma ilkelerine ve açık anahtar silme komutlarına yanıt olarak anahtarları kaldırır. Bu komutları konsolda veya CLI üzerinden çalıştırabilirsiniz.

Premium veya Standart Redis için Azure Cache örneğinde birincil düğüme yazılmış olan anahtarlar da hemen çoğaltmada kullanılabilir durumda olmayabilir. Veriler birincil düğümden çoğaltmaya zaman uyumsuz ve engelleyici olmayan bir yolla çoğaltılır.

Bu anahtarların önbellekten kaybolduğunu fark ederseniz aşağıdaki olası nedenleri denetleyin:

Nedeni Description
Anahtar süre sonu Anahtarlara zaman aşımları ayarlandığından anahtarlar kaldırılır.
Anahtar çıkarma Bellek baskısı altında anahtarlar kaldırılır.
Anahtar silme Anahtarlar açık silme komutları tarafından kaldırılır.
Zaman uyumsuz çoğaltma Veri çoğaltma gecikmeleri nedeniyle anahtarlar bir çoğaltmada kullanılamaz.

Anahtar süre sonu

Redis için Azure Cache, anahtara zaman aşımı atanmışsa ve bu süre geçmişse anahtarı otomatik olarak kaldırır. Redis anahtarının süre sonu hakkında daha fazla bilgi için EXPIRE komut belgelerine bakın. Zaman aşımı değerleri SET, SETEX, GETSET ve diğer *STORE komutları kullanılarak da ayarlanabilir.

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


# Stats

expired_keys:46583

# Keyspace

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

Anahtarın kaybolmasıyla süresi dolan anahtarlarda ani artış arasında bir bağıntı olup olmadığını görmek için önbelleğinizin tanılama ölçümlerine de bakabilirsiniz. Bildirimleri kullanma keyspace veya MONITOR bu tür sorunlarda hata ayıklama hakkında bilgi için Redis Keyspace Eksiklerinde Hata Ayıklama Ekine bakın.

Anahtar çıkarma

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

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

# Stats

evicted_keys:13224

Anahtarın kaybolmasıyla çıkarılan anahtarlarda ani artış arasında bir bağıntı olup olmadığını görmek için önbelleğinizin tanılama ölçümlerine de bakabilirsiniz. Bu tür sorunlarda hata ayıklamak için keyspace bildirimlerini kullanma veya İzleme hakkında bilgi için Redis Keyspace Eksiklerinde Hata Ayıklama Ekine bakın.

Anahtar silme

Redis istemcileri, anahtarları açıkça Redis için Azure Cache kaldırmak için DEL veya HDEL komutunu verebilir. BİlGİ komutunu kullanarak silme işlemlerinin sayısını izleyebilirsiniz. DEL veya HDEL komutları çağrıldıysa, bunlar bölümünde Commandstats listelenir.

# Commandstats

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

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

Zaman uyumsuz çoğaltma

Standart veya Premium katmanındaki herhangi bir Redis için Azure Cache örneği birincil düğüm ve en az bir çoğaltma ile yapılandırılır. Veriler, bir arka plan işlemi kullanılarak birincilden bir çoğaltmaya zaman uyumsuz olarak kopyalanır. redis.io web sitesinde Redis veri çoğaltmasının genel olarak nasıl çalıştığı açıklanır. İstemcilerin Redis'e sık sık yazdığı senaryolarda, çoğaltmanın anlık olması garanti edilmediğinden kısmi veri kaybı oluşabilir. Örneğin, bir istemci ona bir anahtar yazdıktan sonra birincil değer kapanırsa, ancak arka plan işleminin bu anahtarı çoğaltmaya gönderme şansı olmadan önce , çoğaltma yeni birincil olarak devraldığında anahtar kaybolur.

Anahtarlarda önemli veya tam kayıp

Anahtarların çoğunun önbellekten kaybolduğunu fark ederseniz aşağıdaki olası nedenleri denetleyin:

Nedeni Description
Anahtar boşaltma Anahtarlar el ile temizlendi.
Yanlış veritabanı seçimi Redis için Azure Cache varsayılan olmayan bir veritabanını kullanacak şekilde ayarlanmıştır.
Redis örneği hatası Redis sunucusu kullanılamıyor.

Anahtar boşaltma

İstemciler, tek bir veritabanındaki tüm anahtarları kaldırmak için FLUSHDB komutunu veya redis önbelleğindeki tüm veritabanlarından tüm anahtarları kaldırmak için FLUSHALL komutunu çağırabilir. Anahtarların boşaltılıp boşaltılmadığını öğrenmek için BİlGİ komutunu kullanın. bölümünde Commandstats komutlardan herhangi biri FLUSH çağrılıp çağrılmadığı gösterilir:

# Commandstats

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

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

Yanlış veritabanı seçimi

Redis için Azure Cache varsayılan olarak veritabanını kullanırdb0. Başka bir veritabanına (örneğin, db1) geçiş yapıp anahtarları okumaya çalışırsanız Redis için Azure Cache bunları orada bulamazsınız. Her veritabanı mantıksal olarak ayrı bir birimdir ve farklı bir veri kümesi barındırır. Diğer kullanılabilir veritabanlarını kullanmak ve her birinde anahtarları aramak için SELECT komutunu kullanın.

Redis örneği hatası

Redis bir bellek içi veri deposudur. Veriler, Redis önbelleğini barındıran fiziksel veya sanal makinelerde tutulur. Temel katmanındaki Redis için Azure Cache örneği yalnızca tek sanal makinede (VM) çalıştırılır. Bu VM kapanırsa önbellekte depoladığınız tüm veriler kaybolur.

Standart ve Premium katmanlardaki önbellekler, çoğaltılan bir yapılandırmada iki VM kullanarak veri kaybına karşı çok daha yüksek dayanıklılık sunar. Böyle bir önbellekte birincil düğüm başarısız olursa çoğaltma düğümü otomatik olarak veri sunma görevini üstlenir. Bu VM'ler hatalarda ve güncelleştirmelerde, her ikisinin de aynı anda kullanılamaz duruma gelme şansını en aza indirmek için ayrı etki alanlarında bulunur. Bununla birlikte veri merkezinde önemli bir kesinti yaşanırsa VM'ler yine de birlikte kapalı duruma geçebilir. Bu nadir durumlarda verileriniz kaybolur.

Verilerinizin bu altyapı hatalarına karşı korumasını geliştirmek için Redis veri kalıcılığını ve coğrafi çoğaltmayı kullanmayı göz önünde bulundurun.

Ek bilgiler

Bu makaleler veri kaybını önleme hakkında daha fazla bilgi sağlar: