Jika menginginkan kecepatan, sebaiknya persiapkan sebaik mungkin saat menyimpan struktur atau 'cache' di redis. Jika menyimpan produk dalam HSET
, dan tambahkan penghitung kategori (satu per kategori) di samping anggota 'data produk' Anda di HSET
ini , Anda dapat menggunakan HINCRBY
untuk menambah/mengurangi penghitung.
Secara umum (mendesain cache Redis untuk kebutuhan Anda):Anda harus mencoba mencegah pengambilan data apa pun yang tidak Anda perlukan.
Saya merekomendasikan untuk menggunakan skrip Lua untuk menyimpan (/ memperbarui/menghapus) serta mengambil laporan gabungan Anda. Skrip Lua dieksekusi di server Redis. ServiceStack mendukungnya (SCRIPT LOAD
+ EVALSHA
atau cukup EVAL
), dan Anda juga dapat mencoba modul klien BookSleeve C# (yang kami gunakan, dan sedikit lebih cepat. 'lebih cepat' :desain redis-data yang baik tentu saja diutamakan). Klien C# BookSleeve berfokus pada perpipaan redis multithreaded, yang mungkin Anda inginkan ketika berhadapan dengan kumpulan data besar. Pipelining juga dapat dilakukan dengan ServiceStack.
Jika kategori dan produk memiliki ID bilangan bulat, Anda juga dapat menggabungkannya dengan ZSET
, di mana Anda dapat menggunakan ID sebagai bidang skor. Dengan ZRANGEBYSCORE
Anda bisa langsung mendapatkan 'catatan'. Teknik ini aman selama ID Anda menggunakan 15 digit atau kurang, dan tidak menggunakan bagian desimal dari 'skor'. Jadi ID harus tetap dalam kisaran -999999999999999 hingga 999999999999999. Catatan:Batasan ini ada karena server Redis sebenarnya menyimpan skor (float) sebagai representasi string redis secara internal.
Semoga membantu, TW