J'ai beaucoup travaillé avec Memcached ces dernières semaines et je viens de découvrir Redis. Quand j'ai lu cette partie de leur readme, j'ai soudainement ressenti une sensation de chaleur et de confort dans mon estomac:
Redis peut être utilisé comme memcached sur les stéroïdes car il est aussi rapide que memcached mais avec un certain nombre de fonctionnalités en plus. Comme Memcached, Redis prend également en charge la définition de délais d'expiration pour les clés afin que cette clé soit automatiquement supprimée lorsqu'un laps de temps donné s'écoule.
Cela semble incroyable. J'avais aussi trouvé cette page avec des benchmarks: http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison
Donc, honnêtement - Memcache est-il vraiment ce vieux dinosaure qui est un mauvais choix du point de vue des performances par rapport à ce nouveau venu appelé Redis?
Je n'ai pas beaucoup entendu parler de Redis auparavant, d'où l'approche de ma question!
la source
Réponses:
Memcache est un excellent outil encore et TRÈS fiable.
au lieu de regarder ce problème du point de vue de savoir qui est le plus rapide dans la plage <100 ms, regardez les performances par «classe» du logiciel.
la source
Cela dépend de ce dont vous avez besoin, en général je pense que:
Sans un cas d'utilisation, il est difficile de choisir le moment, mais je pense que pour beaucoup de choses, Redis a du sens car même lorsque vous ne voulez pas l'utiliser comme base de données, étant beaucoup plus capable, vous pouvez résoudre plus de problèmes, pas seulement la mise en cache, mais même la messagerie, le classement, etc.
Ps bien sûr, je pourrais être partial puisque je suis le développeur principal du projet Redis.
la source
Redis
beaucoup plus de fonctionnalités;Redis
est également beaucoup plus facile. Aucune dépendance requise;Redis
est également préférable;memcached
c'est un peu plus rapide queRedis
. Il ne touche pas du tout le disque;Redis
c'est un meilleur produit quememcached
.la source
Ce que fait Memcached que Redis ne fait pas, c'est l'éviction des valeurs la moins récemment utilisée du cache. Avec memcached, vous pouvez définir en toute sécurité autant de valeurs que vous le souhaitez, et lorsqu'elles débordent de mémoire, celles que vous n'avez pas utilisées récemment seront supprimées. Avec Redis, vous ne pouvez approximer cela qu'en définissant un délai d'expiration sur tout; lorsqu'il a besoin de libérer de la mémoire, il examinera trois clés aléatoires et supprimera celle qui est la plus proche d'expirer.
C'est la principale différence, si vous ne l'utilisez que comme cache.
la source
Vous voudrez peut-être également regarder Membase.
http://www.northscale.com/products/membase_server.html
Je ne l'ai pas utilisé, mais il semble être similaire à Redis en ce sens qu'il s'agit d'un magasin KV centré sur la mémoire avec persistance. Les principales différences par rapport à ce que je peux voir sont:
Redis dispose d'un seul niveau de déchargement de données sur disque (VM) basé sur un algorithme hybride qui prend en compte à la fois le LRU et la taille de l'objet.
Membase utilise le protocole filaire Memcached - utile comme chemin de mise à niveau pour les applications existantes
Le choix peut dépendre de la mesure dans laquelle votre application peut tirer parti des fonctionnalités supplémentaires de manipulation des données dans Redis.
la source
Hazelcast prend en charge le protocole memcached nativement
https://web.archive.org/web/20140601010929/http://hazelcast.org/docs/latest/manual/html-single/hazelcast-documentation.html
et est donc une alternative moderne à Memcached. Vous devriez essayer toutes les solutions pour voir ce qui fonctionne le mieux pour vous.
la source