Structures de données complexes Redis

Disons que j’ai un hash de hash, par exemple

$data = { 'harry' : { 'age' : 25, 'weight' : 75, }, 'sally' : { 'age' : 25, 'weight' : 75, } } 
  1. Quelle serait la manière «habituelle» de stocker une telle structure de données (ou non?)
  2. Seriez-vous en mesure d’obtenir directement une valeur (p. Ex. Devenir harry: vieillir?
  3. Une fois stocké, pouvez-vous modifier directement la valeur d’une sous-clé (par exemple, sally: poids = 100)

Quelle serait la manière «habituelle» de stocker une telle structure de données (ou non?)

Par exemple, harry et sally seraient stockés chacun dans des hachages séparés où les champs représenteraient leurs propriétés comme l’âge et le poids. Ensuite, définissez la structure de tous les membres (harry, sally, …) que vous avez stockés dans redis.

Seriez-vous en mesure d’obtenir directement une valeur (p. Ex. Devenir harry: vieillir?)

Oui, voir HGET ou HMGET ou HGETALL .

Une fois stocké, pouvez-vous modifier directement la valeur d’une sous-clé (par exemple, sally: poids = 100)

Oui, voir HSET .

Prenons une donnée complexe que nous devons stocker dans Redis, par exemple celle-ci:

  $data = { "user:1" : { name : "sally", password : "123" logs : "25th october" "30th october" "12 sept", friends : "34" , "24", "10" } "user:2" :{ name : "" password : "4567" logs : friends: "" } } 

Le problème auquel nous sums confrontés est que les amis et les journaux sont des listes. Donc, ce que nous pouvons faire pour représenter ces données dans redis, c’est d’utiliser des hashes et de lister quelque chose comme ceci:

Option 1. Une carte de hachage avec des clés en tant qu’utilisateur: 1 et utilisateur: 2

  hmset user:1 name "sally" password "12344" hmset user:2 name "pally" password "232342" create separate list of logs as logs:1 { here 1 is the user id } lpush logs:1 "" "" "" lpush logs:2 "" "" "" and similarly for friends. 

Option 2: carte de hachage contenant des données json vidées sous forme de chaîne

  hmset user:1 name "sally" password "12344" logs "Ssortingng_dumped_data" friends "ssortingng of dumped data" 

Option 3: Ceci est une autre représentation de # 1

  something like user:1:friends -> as a list and user:2:friends -> as a list 

Corrigez-moi si j’ai tort, s’il-vous plait.

Cela dépend de ce que vous voulez faire, mais si votre structure de données n’est pas plus nestede et que vous avez besoin d’accéder à chaque champ, je vous recommande d’utiliser des hachages: http://redis.io/commands#hash

Voici un aperçu des types de données redis, chacun avec pro et contra: http://redis.io/topics/data-types