Redis comment stocker un tableau associatif? Définir ou de Hachage ou de la Liste?
Je suis un peu confus avec toutes les options de stockage de Redis.
Je veux faire quelque chose de simple et je ne veux pas en cours de conception.
Je travaille avec phpredis
et Redis v2.8.6
.
J'ai ce simple tableau associatif que j'ai besoin de stocker. J'ai aussi besoin d'être en mesure de récupérer un élément par sa clé et boucle sur tous les éléments.
$a = array(
'12345' => array(
'name' => 'Post A',
'val2' => 'blah blah',
'val3' => 'blah blah blah',
),
'54321' => array(
'name' => 'Post B',
'val2' => 'blah blah',
'val3' => 'blah blah blah',
),
'998877' => array(
'name' => 'Post C',
'val2' => 'blah blah',
'val3' => 'blah blah blah',
)
);
Donc ce que je faisais jusqu'à présent a été l'aide de hash
type. ranger mon tableau comme ceci:
foreach ($a as $key => $value) {
$this->redis->hSet('posts', $key, json_encode($value));
}
Comme ça j'ai pu accéder à la clé facilement comme ceci:
public function getPost($postId)
{
return json_decode($this->redis->hGet('posts', $postId), true);
}
//This is returning the information of Post A
$post = getPost(12345);
Mais maintenant j'ai besoin de faire une boucle sur tous les postes, je ne sais pas comment le faire et si je peux le faire avec ma structure actuelle. Je ne sais pas si j'en ai besoin pour stocker tous les post_id
dans une autre liste pour être en mesure de boucler sur tous les postes?
Donc ma question est quel type de données(s) dois-je utiliser pour stocker ma liste de messages, ce qui me permet de récupérer un seul poste par son id et de boucler sur tous les postes?
Grâce,
Maxime
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser ENSEMBLE et de TRI et de Hachage en combinaison
Pour OBTENIR un HASH:
POUR OBTENIR Tous les HASH
Si vous ne voulez pas utiliser de sorte que vous pouvez utiliser Récupérer Tous les noms de clé à partir de la configuration à l'aide de SMEMBERS et ensuite utiliser Redis Pipeline pour récupérer toutes les clés
post
dans unSET
? Quelle est la meilleure des optionsSORT
ouSMEMBERS
si j'ai des millions d'entrées dans leSET
?SET
et tous lesHASH
qu'il contient. Je suis juste en utilisant le Redis comme un tampon, tout en faisant des calculs, d'après les calculs, je suis d'enregistrer le résultat dans MySQL et je veux supprimer leRedis
stockés les objets que je ne vais pas utiliser plus.Juste pour les gens qui cherchent pour le code PHP, voici ce que j'ai fini par utiliser:
J'espère que cela aidera certains d'entre vous 😉
$igbinary = function_exists('igbinary_serialize'); $encoded = $igbinary ? igbinary_serialize($data) : serialize($data);
Il devrait être légèrement plus rapide que le sérialiser.En PHP, tu peux faire
Puis
Ou utiliser quelle que soit la sérialisation de la technique que vous préférez. JSON encoder/décoder était assez performant pour moi pas de soins.