Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Mendapatkan beberapa nilai kunci dari Redis

Melakukan loop pada item dan mengakses setiap elemen secara serempak sangat tidak efisien. Dengan Redis 2.4, ada berbagai cara untuk melakukan apa yang Anda inginkan:

  • dengan menggunakan perintah sort
  • dengan menggunakan pipelining
  • dengan menggunakan perintah parameter variadik

Dengan Redis 2.6, Anda juga dapat menggunakan skrip Lua, tetapi ini tidak terlalu diperlukan di sini.

Omong-omong, struktur data yang Anda gambarkan dapat ditingkatkan dengan menggunakan hash. Daripada menyimpan data pengguna dalam kunci terpisah, Anda dapat mengelompokkannya dalam objek hash.

Menggunakan perintah sortir

Anda dapat menggunakan perintah Redis sort untuk mengambil data dalam satu perjalanan pulang pergi.

redis> set users:1:name "daniel"
OK
redis> set users:1:age 24
OK
redis> set users:2:name "user2"
OK
redis> set users:2:age 24
OK
redis> sadd events:1:attendees users:1 users:2
(integer) 2
redis> sort events:1:attendees by nosort get *:name get *:age
1) "user2"
2) "24"
3) "daniel"
4) "24"

Menggunakan pipa

Pipelining dukungan klien Ruby (yaitu kemampuan untuk mengirim beberapa kueri ke Redis dan menunggu beberapa balasan).

keys = $redis.smembers("events:1:attendees")
res = $redis.pipelined do
   keys.each do |x|
      $redis.mget(x+":name",x+":age")
   end
end

Kode di atas hanya akan mengambil data dalam dua perjalanan pulang pergi.

Menggunakan perintah parameter variadik

Perintah MGET dapat digunakan untuk mengambil beberapa data sekaligus:

redis> smembers events:1:attendees
1) "users:2"
2) "users:1"
redis> mget users:1:name users:1:age users:2:name users:2:age
1) "daniel"
2) "24"
3) "user2"
4) "24"

Biaya di sini juga dua kali pulang pergi. Ini berfungsi jika Anda dapat menjamin bahwa jumlah kunci yang akan diambil terbatas. Jika tidak, pipelining adalah solusi yang jauh lebih baik.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis Update Diurutkan Set pada Key Expire

  2. Redis + ActionController::Utas langsung tidak mati

  3. server pegas tidak dapat terhubung ke redis menggunakan klien jedis

  4. Sambungan WebSocket ke <URL> gagal:Kesalahan selama jabat tangan WebSocket:Kode respons tak terduga:521

  5. Bagaimana cara menyimpan array asosiatif? Set atau Hash atau Daftar?