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.