Bagaimana Anda menerapkan skema terakhir di Redis? Apakah mungkin?
Redis tanpa skema . Sebut saja apa yang Anda butuhkan dengan pendekatan penyimpanan data .
Salah satu pendekatan yang mungkin adalah menggunakan HSET
atau HMSET
untuk menambahkan objek JSON ini dengan id, di mana id-nya adalah key dan teks JSON adalah nilai . Kami akan menyebut hash ini sebagai users:byid
.
Ini adalah bagian pertama dari masalah. Sekarang Anda bisa mendapatkan objek dengan id .
Sekarang masalah berikutnya adalah Anda ingin mengambil objek dalam rentang yang Anda sebut peringkat . Untuk mendapatkan ini, Anda perlu menyimpan objek Anda dalam kumpulan yang diurutkan menggunakan ZADD
. Kumpulan yang diurutkan diurutkan berdasarkan skor, dan item disimpan dengan skor . Kedengarannya sempurna untuk kasus penggunaan Anda!
Sebenarnya Anda akan menyimpan id objek di seluruh rangkaian yang diurutkan:
zadd users:byranking 10 1 5 2
... di mana 10
adalah skor (yaitu nilai peringkat Anda yang sebenarnya) dan 1 id dan seterusnya.
Jadi, bagaimana Anda memfilter item berdasarkan peringkat? Menggunakan ZRANGEBYSCORE
:
- Berdasarkan peringkat antara 0 dan 10, tidak termasuk 10.
zrangebyscore users:byranking 0 (10
- Berdasarkan peringkat antara 0 dan 10, termasuk 10.
zrangebyscore users:byranking 0 10
Yang disebut ZRANGEBYSCORE
akan memberi Anda id pengguna yang diambil. Bagaimana Anda mendapatkan teks JSON mereka? Menggunakan HMGET
:
HMGET users:byid 1 2
...yang akan mendapatkan kedua pengguna dengan id 1
dan 2
, jika 10
peringkat bersifat inklusif.