2012-01-05 15 views
10

Verileri noktalı virgül kullanarak kaydettim.Anahtar kartlarını kullanarak anahtarları bulma

redis> keys party:* 

1) "party:congress:president" 
2) "party:bjp:president" 
3) "party:bjp" 
4) "party:sena" 

Tüm tarafları listeleyecek herhangi bir komut var mı? Yukarıdaki örnekte söz konusu olduğunda, ben

congress 
bjp 
sena 
+1

beri

olanağı (Siz tarama yaparken onlar takılı ediliyor eğer TÜM partileri almayabilir) Yapmalisin tüm tarafları almak için geri 0'a döner Bunun için ayrı bir liste bulundurun, onun pahalı değil –

cevap

18

Hayır, bunu yapmak için hiçbir komut yoktur bekliyoruz. Ama gerçekten gerekiyorsa, bunu istemci tarafında uygulamak çok kolay olacaktır.

Uygulamalar, verileri almak için KEYS komutlarını asla kullanmamalıdır. KEYS, sakladığınız milyonlarca anahtarı doğrusal olarak tararken tüm Redis örneğini engeller. Yönetim araçlarında kullanılması gereken bir hata ayıklama komutudur. REDIS ile

, dizine hiçbir btree yapısı tuşları vardır, bu yüzden anahtarları (... seti, zset, vs) mevcut bir koleksiyonu içinde depolanan eğer

+0

[Bu cevap] (http://stackoverflow.com/a/30490869/1041046) kısmi anahtar ile aramak mümkün olduğunu gördüm. Ben sadece redis hakkında öğrenirken, ne kadar doğru olduğundan emin değilim. Daha fazla ayrıntı eklemek için cevabınızı güncellemeniz gerekebilir. – AaA

+0

Kısmi anahtar ile arama yapmak mümkündür, bunun için açıkça bir veri yapısı oluşturuyorsanız, kısmi anahtarla verimli bir şekilde arama yapmak mümkün değildir. Üstelik, buradaki asıl soru arama ile ilgili değil, sonucun manipülasyonu (müşteri tarafında daha iyi yapılır) ile ilgilidir. –

+0

İyi bir nokta, anahtarlarda kısmi arama yapmak istiyordum ve bu da Google'da ikinci bir sonuçtu. – AaA

1

Bence sen hariç tuşları sorgulayamıyor 'partiler' verilerini redis'ten almak istiyorsanız, düzenli verilerinizi her kaydettiğinizde, parti adını parti listesine de kaydedersiniz, daha sonra kolayca alabilirsiniz

4

SCAN komutunu redis olarak kullanabilirsiniz. tüm veritabanını engellemeden anahtarlar arayın.

redis SCAN docs

Bu komut çok ANAHTARLARI komuta filtre gibi çalışır, isteğe bağlı MAÇ filtresi vardır. imleç kadar çağıran

redis> SCAN 0 MATCH party:* 

1) <the cursor> 
2) 1) "party:congress:president" 
    2) "party:bjp:president" 
    3) "party:bjp" 
    4) "party:sena" 

tutmak 2.8

İlgili konular