Redis,distribué ou pas?
La Question 1:
Je sais Redis charger toutes les données en mémoire, ce qui améliore la vitesse de lecture/écriture. Donc, ça veut dire que, si ma mémoire est la taille de la 2G, le maximum de la taille du jeu de données ne doit pas être supérieure à 2G? Maintenant ma base de données de 100 g+ données, la mémoire de mon serveur ne peut pas être plus grand que 32G, donc, Redis est plus adapté pour moi?
La Question 2:
Est Redis un système distribué ou pas? Quand j'ai utiliser google pour rechercher redis chapeau à la propriété, il est dit Redis n'est pas un système distribué, donc, il n'a rien à voir avec CAP
. Mais à partir de Wikipédia, il dit qu'il a un maître-esclave, de l'architecture, un maître avec de nombreux esclaves.
Comment la confusion.
Vous devez vous connecter pour publier un commentaire.
Concernant la question 1, Redis est une banque de mémoire avec une certaine persistance de capacités. Tous votre jeu de données doivent être stockées en mémoire. Une seule instance est donc limitée par la quantité maximale de mémoire de votre serveur. Maintenant, vous pouvez également shard les données de plusieurs Redis cas, en cours d'exécution sur plusieurs serveurs. À condition que vous avez le budget pour cela, il est parfaitement possible de stocker 100 GO - 1 to de données sur un ensemble de Redis boîtes. Veuillez noter que la fragmentation n'est pas automatique: elle doit être mise en œuvre par le client ou l'application. Il met aussi certaines contraintes sur les opérations que vous pouvez faire sur vos données (par exemple, il ne serait pas possible sur le côté serveur pour calculer l'intersection de deux ensembles hébergé par différents Redis cas).
Concernant la question 2, un seul Redis instance n'est pas un système distribué. C'est une télécommande centralisée magasin. Maintenant à l'aide de plusieurs Redis cas, vous pouvez construire un système distribué. Parce que c'est un do-it-yourself approche, vous pouvez décider de faire un CP ou AP système.
Une seule instance peut répliquer à son activité esclave instances (qui sont donc finalement cohérente avec le maître). L'application peut choisir de toujours se connecter au maître pour lire et écrire. Dans ce cas, vous pouvez obtenir un système de pc. Il peut également écrire sur le maître, et lire à partir de toutes les instances (y compris les esclaves), de sorte que vous pouvez obtenir un point d'accès système. J'ai dit "peut", parce qu'il nécessite des travaux de construire de tels systèmes sur le dessus de Redis.
Vous pouvez mélanger de la fragmentation et de la réplication maître/esclave pour construire le système distribué vous avez besoin. Cependant, Redis fournit seulement des briques de base pour ce faire. En particulier, il n'offre que très peu de traiter de la résilience et de HA (et de l'adresse de P dans le théorème CAP). OMI, Redis sentinel seul n'est pas suffisant pour justifier une HA Redis configuration, puisqu'il ne couvre que la gestion des rôles. Vous devez la compléter avec un gestionnaire de ressources, et a mis beaucoup de logique dans le client/de l'application.
Il y a un projet qui s'appelle Redis Cluster, dont le but est de fournir un minimaliste de prêt-à-utiliser un système distribué, mais il manque encore de beaucoup de choses, et n'est pas utilisable en production fin.
Si vous avez besoin d'un off-the-shelf distribué magasin, Redis est probablement pas une bonne option. Vous serez mieux servis par Cassandra, Riak, MongoDB, Couchbase, Aerospike, le Cluster MySQL, Oracle, NoSQL, etc ... Cependant, si vous voulez construire votre propre système spécialisé, Redis est un excellent composant pour construire sur.
Voici un lien utile, Redis Cluster Tutoriel:
Vous pouvez également bénéficier de la recherche à la Facebook solution avec memcache: