2012-01-16 27 views
8

Veri setimizde işimizle her zaman ortaya çıkan bir şey, bir dizi anahtar verilen değerlerin sorgulanmasını gerektiriyor. Tarih aralıkları bariz bir örnektir.Redisli bir dizi anahtar mı aldınız?

Sana unix zaman damgaları ve tarih aralıklarına göre sorgulamak için sıralanmış bir dizi kullanabilirsiniz biliyorum ama ya

  1. sıralı sette değeri olarak bütün belge sokmanız gerekiyor, çünkü can sıkıcı görünüyor veya
  2. sadece kimlikleri içine koyun, sonra her bir anahtar için redis isteyin.

Seçenek 2 standarttır? Aynı anda birden fazla anahtar için redis sormanın bir yolu var mı? Mongodb'ın $ sorgudaki gibi mi? Ya da belki de bir boru hattında bir kaç anahtar sormak aynı hızda mı?

+0

seçenek 2 standarttır YOURKEY ile başlayan tüm anahtarlardan verileri. Çoklu tuşlar için bir MGET var. http://redis.io/topics/twitter-clone –

cevap

6

Seçenekler 2, Ids sıralı kümeye koyun sonra değerlerini almak için mget kullanın, anahtarlarınız karma ise o zaman birden çok hget vermeniz gerekir, ancak avantajı aslında nesnenin belirli bölümlerini çekebilirsiniz ki aslında her şeyin yerine ihtiyacım var. Pratikte çok hızlı.

+0

İlginç. Ben de boru hattını kullanmak ister misin? Bu şekilde düzenli olarak 100 değeri çıkarmak istiyorum. Bu SORT ile de mümkün gibi görünüyor, değil mi? Daha yavaş mı? –

+1

Hangi tür/kütüphane kullanmakta olduğunuza bağlı olarak, genellikle node.js için node_redis, ekstra çaba harcamadan sizin için yapar. Sıralama numarasını da kullanabilirsiniz, ancak gerçekten ölçülebilir bir şekilde daha hızlı olup olmadığından emin değilim. Bunun için bazı kriterleri görmek isterim. –

+0

Pipelining kullanmalıyım, bunun performansını ölçtüm ve 10k anahtarla yaklaşık 5 kat daha hızlı çalışıyorum, blogumdaki sonuçlar http://blog.jmoz.co.uk/python-redis-py-pipeline – jmoz

1

Belki bazı bash sihirleri yardımcı olur?

echo 'keys YOURKEY*' | redis-cli | sed 's/^/get /' | redis-cli 

çıktısı verir

+4

** Önemli not: ** 'KEYS' komutu engelleniyor ve çok fazla veriye sahipseniz çok uzun zaman alabilir. Sunucuları/uygulamaları bu şekilde alabilirsiniz. – ceejayoz

İlgili konular