Comme Redis est un stockage en mémoire, vous ne pouvez pas stocker de grandes données qui ne correspondent pas à la taille de la mémoire de votre machine. Redis fonctionne généralement très mal lorsque les données qu'il stocke sont supérieures à 1/3 de la taille de la RAM. C'est donc la limite fatale de l'utilisation de Redis comme base de données.
Certes, vous pouvez distribuer vos données volumineuses dans plusieurs instances Redis, mais vous devez le faire manuellement. L'opération se déroule généralement comme suit (en supposant que vous n'ayez qu'une seule instance au départ) :
- Utilisez son mécanisme maître-esclave pour répliquer les données sur la deuxième machine. Vous avez maintenant deux copies des mêmes données.
- Coupez la connexion entre le maître et l'esclave.
- Supprimez la première moitié (divisée par hachage, etc.) des données sur la première machine, et supprimez la seconde moitié des données sur la seconde machine.
- Dites à tous les clients (PHP, C, etc...) de fonctionner sur la première machine si les clés spécifiées sont sur cette machine, sinon de fonctionner sur la seconde machine.
C'est la façon dont Redis s'adapte ! Vous devez également arrêter votre service pour empêcher toute écriture pendant la migration.
A l'expérience que nous rencontrons, nous avons cette conclusion à Redis : Redis n'est pas le bon choix pour stocker plus de 30G de données, Redis n'est pas extensible, Redis est plutôt adapté au développement de prototypes.
Nous trouverons plus tard une alternative à Redis, à savoir SSDB( https://github.com/ideawu/ssdb ), un serveur leveldb qui supporte presque toutes les APIs de Redis, il est approprié pour stocker plus de 1TB de données, cela dépend seulement de la taille de votre disque dur.