Choisir hash
sur string
présente de nombreux avantages et quelques inconvénients selon les cas d'utilisation. Si vous choisissez le hachage, il est préférable de concevoir votre objet json sous forme de champs de hachage et de valeurs telles que ;
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"
Voici les avantages du hash
sur les chaînes lorsque vous effectuez une modélisation de données appropriée.
- Du côté des performances, la plupart des commandes pour les chaînes et le hachage ont la même complexité.
- Accéder/mettre à jour/supprimer les champs json individuels sur les hachages plus facilement lorsqu'ils sont comparés aux chaînes. Vous n'avez pas besoin d'obtenir la chaîne entière, de la décoder, de la modifier et de la redéfinir. Vous pouvez utiliser HDEL, HSET ou HGET pour ces opérations sans obtenir l'intégralité de l'objet.
- Si la taille de votre objet chaîne augmente, vous souffrirez du réseau et de la bande passante lors du transfert (get/set) de l'objet entier. Comme indiqué dans la documentation
La vitesse de la RAM et la bande passante mémoire semblent moins critiques pour les performances globales, en particulier pour les petits objets. Pour les objets volumineux (> 10 Ko), cela peut cependant devenir perceptible.
- Les hachages sont plus conviviaux en mémoire que les chaînes si vous faites une bonne référence pour concevoir la taille de vos données. Comme indiqué dans la documentation et un exemple de cas d'utilisation par l'ingénierie instagram, vous pouvez obtenir un énorme avantage avec l'encodage spécial.
Les hachages, les listes, les ensembles composés uniquement d'entiers et les ensembles triés, lorsqu'ils sont inférieurs à un nombre donné d'éléments et jusqu'à une taille d'élément maximale, sont encodés d'une manière très efficace en mémoire qui utilise jusqu'à 10 fois moins de mémoire (avec 5 temps moins la mémoire utilisée étant l'économie moyenne).
D'autre part, selon votre ou vos cas d'utilisation ;
ziplist
n'est pas gratuit, c'est un compromis entre la mémoire et le processeur.- Vous ne pouvez pas expirer partiellement les champs de hachage. Si vous divisez en plusieurs chaînes, vous pouvez
EXPIRE
mais dans les hachages, seule la clé de niveau supérieur peut être expirée avec toutes les valeurs.