Redis için Azure Cache'de veri kaybı sorunlarını giderme
Bu makalede, veri kaynaklarında meydana gelen gerçek veya algılanan veri kayıplarını tanılama Redis için Azure Cache.
Not
Bu kılavuzda yer alan sorun giderme adımlarının bazıları Redis komutlarını çalıştırma ve çeşitli performans ölçümlerini izleme yönergelerini içerir. Daha fazla bilgi ve yönergeler için Ek bilgiler bölümündeki makalelere bakın.
Anahtarların kısmi kaybı
Redis için Azure Cache, bellekte depolanmış olan anahtarları rastgele silmez. Ancak, süre sonu veya çıkarma ilkelerine ve açık anahtar silme komutlarına yanıt olarak anahtarları kaldırır. Premium veya Standard Redis için Azure Cache örneğindeki birincil düğüme yazılan anahtarlar da bir çoğaltmada hemen kullanılamıyor olabilir. Veriler birincil çoğaltmadan zaman uyumsuz ve engelleyici olmayan bir şekilde çoğaltılır.
Anahtarların önbelleğinden kaybolduğunu bulursanız aşağıdaki olası nedenleri kontrol edin:
| Nedeni | Description |
|---|---|
| Anahtar süre sonu | Anahtarlar, zaman ayarlanmış olduğundan kaldırılır. |
| Anahtar çıkarma | Anahtarlar bellek baskısı altında 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 çoğaltmada kullanılamaz. |
Anahtar süre sonu
Redis için Azure Cache, anahtara bir zaman out değeri atandığı ve bu sürenin geç olduğu bir anahtarı otomatik olarak kaldırır. Redis anahtarı süre sonu hakkında daha fazla bilgi için EXPIRE komutu belgelerine bakın. Zaman out değerleri set , SETEX , GETSETve diğer STORE komutları kullanılarak * da ayarlandırabilirsiniz.
Süresi dolan anahtar istatistiklerini almak için Bİlgİ komutunu kullanın. bölümünde Stats süresi dolan anahtarların toplam sayısı yer almaktadır. bölümü, zaman zaman zamanları ve ortalama zaman out değerine sahip anahtar Keyspace sayısı hakkında daha fazla bilgi sağlar.
# Stats
expired_keys:46583
# Keyspace
db0:keys=3450,expires=2,avg_ttl=91861015336
Anahtarın kaybolduğu zaman ile süresi dolmuş anahtarlarda ani bir artış arasında bağıntı olup olamay olduğunu görmek için önbelleğinizin tanılama ölçümlerine de bakebilirsiniz. Anahtar alanı bildirimlerini kullanma veya bu tür sorunlarda hata ayıklamak için İzleme hakkında bilgi için bkz. Redis Keyspace Hata Ayıklama Eki.
Anahtar çıkarma
Redis için Azure Cache depolamak için bellek alanı gerekir. Gerektiğinde kullanılabilir belleği serbest bırakarak anahtarları temizler. INFO used_memory 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 çıkarmaya başlar.
Bİlgİ komutunu kullanarak çıkarıldığı anahtar sayısını izleyebilirsiniz:
# Stats
evicted_keys:13224
Anahtarın kaybolduğu zaman ile çıkarıldığı anahtarlarda ani bir artış arasında bir bağıntı olup olamay olduğunu görmek için önbelleğinizin tanılama ölçümlerine de bakebilirsiniz. Anahtar alanı bildirimlerini kullanma veya bu tür sorunlarda hata ayıklamak için İzleme hakkında bilgi için bkz. Redis Keyspace Hata Ayıklama Eki.
Anahtar silme
Redis istemcileri, anahtarlardan açıkça kaldırmak için DEL veya HDEL Redis için Azure Cache. Bİlgİ komutunu kullanarak silme işlemlerinin sayısını izleyebilirsiniz. DEL veya HDEL komutları çağrıldı ise, 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 Redis için Azure Cache katmanda Premium örnek birincil düğüm ve en az bir çoğaltma ile yapılandırılır. Veriler, bir arka plan işlemi kullanılarak birincil çoğaltmadan zaman uyumsuz olarak kopyalanır. Web redis.io Redis veri çoğaltmanın genel olarak nasıl çalıştığını açıklar. İstemcilerin Redis'e sık sık yazdiği senaryolarda, bu çoğaltmanın anlık olması garanti edilemez olduğundan kısmi veri kaybı oluşabilir. Örneğin, bir istemci anahtar yazdıktan sonra birincil anahtar kaybolur, ancak arka plan işleminin bu anahtarı çoğaltmaya gönderme şansı olmadan önce, çoğaltma yeni birincil olarak teslim olduğunda anahtar kaybolur.
Anahtarlarda büyük veya tam kayıp
Anahtarların çoğu veya hepsi önbelleğinden kayboldusa aşağıdaki olası nedenleri kontrol edin:
| Nedeni | Description |
|---|---|
| Anahtar boşaltma | Anahtarlar el ile temizlandı. |
| Yanlış veritabanı seçimi | Redis için Azure Cache, varsayılan olmayan bir veritabanı kullanmak üzere ayarlanı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 Bir Redis önbelleğinde tüm veritabanlarından tüm anahtarları kaldırmak için FLUSHALL komutunu çağırabilirsiniz. Anahtarların boşaltıp boşaltı olmadığını bulmak için Bİlgİ komutunu kullanın. bölümü, Commandstats FLUSH komutlarını çağırıp çağırmamaları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
Yanlış veritabanı seçimi
Redis için Azure Cache db0 veritabanını varsayılan olarak kullanır. Başka bir veritabanına (örneğin db1) geçiş yapmaya ve bu veritabanından anahtarları okumaya Redis için Azure Cache veritabanında bulamayabilirsiniz. Her veritabanı mantıksal olarak ayrı bir birimdir ve farklı bir veri kümesi tutar. Select komutunu kullanarak diğer kullanılabilir veritabanlarını kullanın ve bunların her birsinde anahtarlara bakın.
Redis örneği hatası
Redis bir bellek içinde veri deposu. Veriler Redis önbelleğini barındıran fiziksel veya sanal makinelerde tutulur. Temel Redis için Azure Cache bir sanal makine örneği yalnızca tek bir sanal makinede (VM) çalışır. Bu VM'nin çalışıramadı, önbellekte depolanmış olan tüm veriler kaybolur.
Standart ve Premium katmanlarında önbellekler, çoğaltılmış yapılandırmada iki VM kullanarak veri kaybına karşı çok daha yüksek bir koruma sağlar. Böyle bir önbellekte birincil düğüm başarısız olduğunda, çoğaltma düğümü verileri otomatik olarak hizmet vermek için üstlenir. Bu VM'ler, her ikisinin de aynı anda kullanılamaz olma ihtimalini en aza indirmek için hatalar ve güncelleştirmeler için ayrı etki alanlarında bulunur. Ancak büyük bir veri merkezi kesintisi yaşanıyorsa VM'ler birlikte kesintiye neden olabilir. Bu nadir durumlarda verileriniz kaybolur.
Verilerinizin bu altyapı hatalarına karşı korunmasını geliştirmek için Redis veri kalıcılığı ve coğrafi çoğaltmayı kullanmayı göz önünde bulundurabilirsiniz.