2013-09-26 2 views
3

Je considère sérialiser un grand ensemble d'enregistrements de base de données pour le cache dans Redis, en utilisant python et Cassandra. Je dois soit sérialiser chaque enregistrement et persister une chaîne dans redis ou créer un dictionnaire pour chaque enregistrement et persister dans redis comme une liste de dictionnaires.Python - Redis: Meilleure pratique sérialisation des objets pour le stockage dans Redis

Quelle est la méthode la plus rapide? pickle chaque enregistrement? ou créer un dictionnaire pour chaque enregistrement? Et ensuite: Y at-il une méthode à extraire de la base de données comme liste de dic? (au lieu d'une liste d'obj de modèle)

Répondre

2

Au lieu de sérialiser vos dictionnaires en chaînes et de les stocker dans un LISIS LIST (ce que vous proposez), vous pouvez stocker chaque dict comme un HASH Redis. Cela devrait fonctionner si vos dicts sont des paires clé/valeur relativement simples. Après avoir créé chaque HASH, vous pouvez ajouter la clé pour le HASH à une LISTE, ce qui vous fournirait un index des clés pour les hachages. Les avantages de cette approche pourraient être d'éviter ou de réduire la quantité de sérialisation nécessaire et de faciliter l'utilisation de l'ensemble de données dans d'autres applications et dans d'autres langues. Il y a bien sûr beaucoup d'autres approches que vous pouvez suivre et qui dépendront de nombreux facteurs liés au type de données que vous traitez et à la façon dont vous envisagez de l'utiliser. Si vous optez pour la sérialisation, vous pouvez envisager au moins un format de sérialisation plus agnostique, tel que JSON, BSON, YAML ou l'un des nombreux autres.

Questions connexes