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

Nilai Redis dan Kueri

Sangat mungkin untuk memodelkan data ini dengan Redis, tetapi Anda perlu memikirkan struktur data DAN jalur akses. Dengan Redis, jalur akses tidak dikelola secara implisit (seperti dengan indeks di RDBMS/MongoDB).

Untuk contoh yang diberikan, Anda dapat memiliki:

user:<user hash> -> hash of user properties
user:<user hash>:sent -> set of <msg hash>
user:<user hash>:received -> set of <msg hash>
message:<msg hash> -> hash of message properties

Menambahkan/menghapus pesan berarti mempertahankan set *:sent dan *:received yang sesuai dengan pengirim dan penerima, selain menambahkan/menghapus objek pesan itu sendiri.

Mengambil pesan yang dikirim atau diterima untuk pengguna tertentu hanyalah perintah SMEMBERS, atau SORT jika Anda ingin mengambil juga properti pesan pada saat yang sama:

# Get a list of message hash codes only in one roundtrip
smembers user:<user hash>:received

# Get a list of message contents in one roundtrip
sort user:<user hash>:received by nosort get message:*->sender get message:*->message

Untuk alasan penggunaan sort, lihat:

  • Mendapatkan beberapa nilai kunci dari Redis
  • Perlu bantuan untuk membuat konsep di Redis/NoSQL

Catatan 1: dengan Redis lebih baik menggunakan bilangan bulat sebagai kunci daripada UUID atau kode hash (terutama dalam set), karena disimpan dengan cara yang lebih efisien.

Catatan 2: jika Anda perlu memesan pesan, maka daftar harus digunakan alih-alih set. Konsekuensinya hanya pesan terlama yang dapat dihapus, dan hanya pesan baru yang dapat ditambahkan dengan cara yang efisien. Anda mungkin juga akan menambahkan daftar global untuk semua pesan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Saya mendapatkan kesalahan Kelas 'Predis\Client' tidak ditemukan di Laravel 5.2

  2. Toko redis (atau basis data apa pun?) Mekanisme kunci (NodeJS)

  3. Bagaimana cara EXPIRE kunci anak HSET di redis?

  4. Cara menghapus ratusan ribu kunci secara massal dengan karakter khusus di Redis

  5. Bagaimana cara melanjutkan slot hash dari node tertentu di redis cluster jika terjadi kegagalan keras?