Les données d'entité telles que les informations utilisateur sont stockées dans Memcached avec protobuf encodage, avec une date d'expiration d'une semaine, en tant que cache de deuxième niveau de MySQL
Les données de la liste, telles que la liste d'abonnements de l'utilisateur, sont stockées dans Redis et les données correspondantes sont également sauvegardées par MySQL. Cependant, si Redis ne peut pas les lire, elles ne seront plus lues dans MySQL
.
Résumé :
Redis possède des structures de données riches et convient au stockage d'ensembles, de listes ou de tables ordonnées
Redis ne disposait pas d'une solution distribuée relativement complète à l'époque, nous avons donc essayé de ne pas stocker de données d'entités volumineuses (bien sûr, à mesure que le nombre d'utilisateurs augmentait considérablement, nous avons ensuite implémenté une pseudo-distribution à l'aide de clés de hachage)
memcached est relativement simple et plus rapide que Redis, et convient au stockage des données d'entité. Cependant, le problème rencontré à l'époque était que l'empaquetage et l'analyse de json deviendraient un goulot d'étranglement, donc plus tard nous sommes tous passés à <.>
protobuf
Lorsque vous devez prendre en charge plus de types de données en plus de la clé/valeur ou lorsque les données stockées ne peuvent pas être éliminées, il est plus approprié d'utiliser Redis. Et si vous vous contentez simplement de mettre en cache des données, il est évidemment plus approprié d'utiliser memcached. En d’autres termes, en comparaison, Redis est plus adapté au stockage, tandis que Memcache est plus adapté à la mise en cache.
Quelqu'un sur stackoverflow a posé cette question "Memcached est-il un dinosaure par rapport à Redis ?", et l'auteur de redis a donné la réponse (http://stackoverflow.com/questions/2873249/is-memcached-a-dinosaur- en comparaison avec Redis). Dans l’ensemble, les performances des deux sont très bonnes, il n’y a donc pas lieu de s’inquiéter de savoir lequel a les performances les plus élevées. Cependant, les mécanismes de persistance et de synchronisation des données fournis par Redis ne sont pas disponibles dans Memcached, donc si vous souhaitez de la persistance, vous ne pouvez utiliser que Redis. De plus, memcached est suffisant pour un simple stockage clé-valeur, mais si vous souhaitez utiliser des structures de données plus avancées, telles que hachage, liste, set, zset, etc., redis fournit ces types, qui sont plus pratiques à utiliser.
Voici comment l'utilisait l'ancienne usine :
protobuf
encodage, avec une date d'expiration d'une semaine, en tant que cache de deuxième niveau de MySQLRésumé :
json
deviendraient un goulot d'étranglement, donc plus tard nous sommes tous passés à <.>protobuf
Lorsque vous devez prendre en charge plus de types de données en plus de la clé/valeur ou lorsque les données stockées ne peuvent pas être éliminées, il est plus approprié d'utiliser Redis. Et si vous vous contentez simplement de mettre en cache des données, il est évidemment plus approprié d'utiliser memcached. En d’autres termes, en comparaison, Redis est plus adapté au stockage, tandis que Memcache est plus adapté à la mise en cache.
Tout ce qui a besoin de
频繁查询
et变化频率不是太高
est là où ces deux-là sont utilesQuelqu'un sur stackoverflow a posé cette question "Memcached est-il un dinosaure par rapport à Redis ?", et l'auteur de redis a donné la réponse (http://stackoverflow.com/questions/2873249/is-memcached-a-dinosaur- en comparaison avec Redis). Dans l’ensemble, les performances des deux sont très bonnes, il n’y a donc pas lieu de s’inquiéter de savoir lequel a les performances les plus élevées. Cependant, les mécanismes de persistance et de synchronisation des données fournis par Redis ne sont pas disponibles dans Memcached, donc si vous souhaitez de la persistance, vous ne pouvez utiliser que Redis. De plus, memcached est suffisant pour un simple stockage clé-valeur, mais si vous souhaitez utiliser des structures de données plus avancées, telles que hachage, liste, set, zset, etc., redis fournit ces types, qui sont plus pratiques à utiliser.