Memilih hash
di atas string
memiliki banyak manfaat dan beberapa kelemahan tergantung pada kasus penggunaan. Jika Anda akan memilih hash, lebih baik untuk mendesain objek json Anda sebagai bidang &nilai hash seperti;
127.0.0.1:6379> hset user:1 ssn 10101010101 name john surname wick date 2020-02-02 location continental
(integer) 5
127.0.0.1:6379> hgetall user:1
1) "ssn"
2) "10101010101"
3) "name"
4) "john"
5) "surname"
6) "wick"
7) "date"
8) "2020-02-02"
9) "location"
10) "continental"
Berikut adalah manfaat dari hash
lebih dari string saat Anda melakukan pemodelan data yang tepat.
- Di sisi performa, sebagian besar perintah untuk string dan hash memiliki kompleksitas yang sama.
- Mengakses/memperbarui/menghapus masing-masing bidang json pada hash lebih mudah jika dibandingkan dengan string. Anda tidak perlu mendapatkan seluruh string, decode, membuat perubahan dan mengaturnya lagi. Anda dapat menggunakan HDEL, HSET, atau HGET untuk operasi tersebut tanpa mendapatkan keseluruhan objek.
- Jika ukuran objek string Anda bertambah, Anda akan menderita jaringan dan bandwidth saat mentransfer (mendapatkan/mengatur) seluruh objek. Seperti yang dinyatakan dalam dokumentasi
Kecepatan RAM dan bandwidth memori tampaknya kurang penting untuk kinerja global terutama untuk objek kecil. Untuk objek besar (>10 KB), mungkin akan terlihat.
- Hash lebih ramah memori daripada string jika Anda membuat tolok ukur yang baik untuk mendesain ukuran data Anda. Seperti yang dinyatakan dalam dokumentasi dan contoh kasus penggunaan oleh teknik instagram, Anda mungkin mendapatkan manfaat besar dengan pengkodean khusus.
Hash, Daftar, Himpunan yang hanya terdiri dari bilangan bulat, dan Kumpulan Terurut, ketika lebih kecil dari sejumlah elemen tertentu, dan hingga ukuran elemen maksimum, dikodekan dengan cara yang sangat hemat memori yang menggunakan memori hingga 10 kali lebih sedikit (dengan 5 waktu lebih sedikit memori yang digunakan sebagai penghematan rata-rata).
Di sisi lain, tergantung pada kasus penggunaan Anda;
ziplist
tidak gratis, ini adalah pertukaran antara memori dan cpu.- Anda tidak dapat kedaluwarsa sebagian bidang hash. Jika Anda membagi menjadi beberapa string maka Anda dapat
EXPIRE
mereka tetapi dalam hash hanya kunci tingkat atas yang dapat kedaluwarsa dengan semua nilai.