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

Mencari nilai redis db

Redis adalah untuk kasus penggunaan di mana Anda perlu mengakses dan memperbarui data pada frekuensi yang sangat tinggi dan di mana Anda mendapat manfaat dari penggunaan struktur data (hash, set, daftar, string, atau set yang diurutkan). Itu dibuat untuk mengisi kasus penggunaan yang sangat spesifik. Jika Anda memiliki kasus penggunaan umum seperti pencarian yang sangat fleksibel, Anda akan jauh lebih baik dilayani oleh sesuatu yang dibuat untuk tujuan ini seperti pencarian elastis atau SOLR.

Yang mengatakan, jika Anda harus melakukan ini di Redis, inilah cara saya melakukannya (dengan asumsi pengguna dapat berbagi nama dan nomor telepon):

name:some_name -> set([id1, id2, etc...])
name:some_other_name -> set([id3, id4, etc...])

phone:some_phone -> set([id1, id3, etc...])
phone:some_other_phone -> set([id2, id4, etc...])

id1 -> {'name' : 'bob', 'phone' : '123-456-7891', etc...}
id2 -> {'name' : 'alice', 'phone' : '987-456-7891', etc...}

Dalam hal ini, kami membuat kunci baru untuk setiap nama (diawali dengan "nama:") dan setiap nomor telepon (diawali dengan "telepon:"). Setiap poin kunci ke satu set id yang memiliki semua info yang Anda inginkan untuk pengguna. Saat Anda menelusuri, untuk telepon, misalnya, Anda akan melakukan:

HGETALL 'phone:123-456-7891'

dan kemudian ulangi hasil dan kembalikan info apa pun pada masing-masing (nama dalam contoh kami) dalam bahasa pilihan Anda (Anda dapat melakukan semua ini di Lua sisi server pada kotak Redis untuk bekerja lebih cepat dan menghindari jaringan bolak-balik-dan- sebagainya, jika Anda mau):

for id in results:
    HGET id 'name'

Biaya Anda di sini adalah O(m) dimana m adalah jumlah pengguna dengan nomor telepon yang diberikan, dan ini akan menjadi operasi yang sangat cepat di Redis karena dioptimalkan untuk kecepatan. Ini akan berlebihan dalam kasus Anda karena Anda mungkin tidak perlu sesuatu berjalan begitu cepat, dan Anda lebih suka memiliki pencarian yang fleksibel, tetapi beginilah cara Anda melakukannya.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apa perbedaan antara StackExchange.Redis dan StackExchange.Redis.StrongName?

  2. Cara mengatur Redis di namespace khusus sebagai cache dan MQ pada aplikasi web ServiceStack menggunakan Structuremap

  3. Mengapa file dump.rdb Redis 500MB membutuhkan memori sekitar 5,0GB?

  4. Bagaimana cara membuat bus layanan berbasis Windows lokal di luar Azure, mirip dengan Redis dengan kegagalan otomatis?

  5. Memecahkan masalah