2016-04-07 19 views
1

Redis önbelleğinde yaklaşık 150.000 anahtarım var ve bir önbellek yeniden oluşturmanın parçası olarak, belirli bir anahtar önekiyle eşleşen tüm anahtarların>% 95'inin silinmesi gerekiyor.StackExchange.Redis kullanarak belirli bir anahtar desenle eşleşen tüm anahtarları nasıl silerim?

  1. Kullanım server.Keys (pattern) her biri için KeyDelete çağıran tuşlar aracılığıyla benim önek kalıpla eşleşen tüm anahtar liste çekin ve yineleme için: Bunu görebileceğiniz gibi, bunu başarmak için üç yol vardır.
  2. Redis kümesindeki tuşların bir listesini koruyun - her bir değer eklediğimde, anahtarı ilgili anahtar kümesine ekledim ve ardından bu kümeleri, Anahtarlar'ı kullanmak yerine almak istiyorum. Bu, pahalı Keys() çağrısından kaçınacak, ancak on binlerce kaydı tek tek silmeye dayanıyor.
  3. Tüm geçici verilerimi belirli bir numaralı veritabanında yalıtın ve bir önbellek yeniden oluşturmanın başlangıcında tamamen temizleyin. Ben Lua komut dosyası üzerinde CLI kullanın veya itimat başka yerlerde çözümler gördüm ama görünüyor hiçbir şey bu özel kullanım durumunda adrese - -

Ben .NET ve StackExchange.Redis istemci kullanıyorum kaçırdım bir hile mi, yoksa Redis ile yapmaman gereken bir şey mi?

(Arka plan: Redis, Microsoft Dynamics CRM API'sinin önünde bir görünüm modeli olarak davranıyor; bu nedenle, önbellek, ilk kez 100K kayıtlarını CRM'den çekerek doldurulur ve ardından bildirimleri içeriden yayınlayarak senkronize olarak saklanır. Bir varlık değiştirildiğinde CRM, süresiz olarak saklanır ve CRM eklentilerinin belirli bir süre boyunca ateş etmediği belirli bir senaryo ile uğraşırız, bu da önbellek kaymasına neden olur ve sonuçta önbelleği temizlememizi ve yeniden oluşturmamızı gerektirir. .)

+0

Seçenek 2 için [bu bir LUA kullanarak] (http://stackify.com/implementing-cache-tagging-redis) veya [bu destekleyici küme] gibi bir geçersiz kılma mekanizması kullanabilirsiniz (https: //github.com/thepirat000/CachingFramework.Redis#tagging-mechanism) – thepirat000

cevap

0

Her iki seçenek de 2 & 3 makuldür.

1. seçenekten emin olun. ANAHTAR gerçekten yavaştır ve yalnızca anahtar alanınız büyüdükçe yavaşlar.

Normalde 2'ye gidiyorum (LUA dahil LUA olmadan, çözümü desteklemek için öğrenme eğrisini artıracaktı - tabi ki haklı olduğunda ve varlığının açık/belgeli olduğu varsayıldığında iyi). Yapılandırılmış DB limitini aşmayacağınızdan emin olduğunuz sürece hızlı ve basit bir yarışmacı.

+0

bu yardımcı oldu mu? Hangi çözümle gittin? Teşekkürler –

İlgili konular