2017-04-01 3 views
0

Notre base de données est la plupart du temps des lectures, mais nous voulons ajouter un "Compte de la vue" et "pouces vers le haut/pouces vers le bas" à nos vidéos.Comment gérer "Voir le compte" en redis

Lorsque nous insistons sur les vues incrémentées testées dans mysql, notre base de données a commencé à faire une impasse.

Je pensais à gérer ce problème en ayant une base de données redis qui contient le nombre de vues, et écrit uniquement dans la base de données une fois la clé expirée. Mais, j'entends les notifications ne sont pas cohérentes, et je ne veux pas perdre les données de vue.

Y a-t-il une meilleure façon de procéder? Ou est la discussion de notifications redis incohérent n'est pas vrai.

Merci,

Sammy

Répondre

0

Redis de notifications de Keyspace sont compatibles, mais la livraison ne sont pas garantis. Si vous ne voulez pas perdre de données, implémentez votre propre processus d'arrière-plan qui expire manuellement les compteurs, c'est-à-dire les copies vers MySQL et supprimés de Redis.

Il existe plusieurs approches pour implémenter ce modèle d'expulsion paresseux. Par exemple, vous pouvez utiliser un Redis Hash avec deux champs: un champ de valeur que vous pouvez HINCRBY et un champ d'horodatage à des fins de logique d'expiration. Votre processus d'arrière-plan peut alors SCAN l'espace de clé pour identifier les clés obsolètes.

Une autre méthode consiste à utiliser des ensembles triés pour gérer les compteurs. Dans certains cas, vous pouvez utiliser un seul ensemble trié, encodant à la fois TTL et nombre dans le score de chaque membre (en utilisant les parties entières et fractionnaires du flottant, respectivement), mais dans la plupart des cas, il est plus simple d'utiliser deux sets. d'autres valeurs de fourrure.

+0

Je vais essayer ça! Je vous remercie! –

+0

Existe-t-il un moyen de rechercher des clés spécifiques, ou vous suffit de tout scanner et de rechercher chaque clé individuelle –