2011-01-11 5 views
3

J'utilise Redis pour stocker les journaux de données de nombreux capteurs analogiques. Mon objectif est de trier les données en fonction d'un horodatage de journal et d'extraire les données d'une plage de date-heure spécifique. Mon modèle de données original était d'utiliser le nom du capteur comme clé et d'avoir un hachage pour chaque horodatage et la valeur attachée au hashkey.Redis - Recherche de suggestions de modélisation de données

Donc. si j'ai SensorA, SensorB et SensorC, faire une touche * retournera 1. SensorA, 2. SensorB et 3. SensorC. Faire hget SensorB 20110111172900 reviendrait, disons 25.

Le problème avec la modélisation actuelle est qu'elle ne permet pas le tri sur l'horodatage, ou alors je pense que tout ce que j'ai essayé a échoué. Est-ce que quelqu'un pourrait suggérer un modèle de données qui permettrait de trier et d'extraire des plages de données, ou suggérer les arguments de tri appropriés qui le permettraient dans le modèle de données ci-dessus?

+0

En regardant à nouveau les ensembles triés avec la perspective que vous m'avez donné, ils sont le choix évident. - Merci Tom! –

Répondre

6

Un ensemble trié est probablement un meilleur ajustement qu'un hachage dans ce cas.

La valeur serait une combinaison d'horodatage et de valeur de capteur. Le score serait l'horodatage. Utilisez ZRANGEBYSCORE pour récupérer les valeurs. La lecture et l'écriture vont de O (1) à O (Log (N)), mais vous avez la possibilité de renvoyer une plage de valeurs.

Vous pouvez également utiliser une liste pour obtenir l'insertion O (1). La lecture serait O (N) pour récupérer une entrée spécifique, mais obtenir les entrées les plus récentes serait O (1).

+0

Nous avons trouvé une petite mise en garde cependant. Si le capteur finit par lire la même valeur (membre) plus d'une fois (ce qui est plus que très légèrement), le score précédent (horodatage) sera écrasé. –

+1

C'est pourquoi vous stockez une combinaison plutôt que la valeur réelle - par exemple zadd SensorA 20110111172900 20110111172900: 25 –

+0

Vous avez raison, dans l'excitation, nous avons totalement négligé ces détails. Nous avons mis en œuvre comme vous l'avez suggéré et cela fonctionne très bien. Merci beaucoup à vous. –

Questions connexes