J'ai beaucoup travaillé avec memcached ces dernières semaines et je viens de découvrir Redis. Lorsque j'ai lu cette partie de leur fichier readme, j'ai soudain eu une sensation de chaleur dans mon estomac:
Redis peut être utilisé en tant que memcached sur steroids, car il est aussi rapide que memcached mais avec un certain nombre de fonctionnalités supplémentaires. 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 au bout d'un certain laps de temps.
Cela semble incroyable. J'avais aussi trouvé cette page avec des points de repère: http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison
Alors, 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'avais pas beaucoup entendu parler de Redis auparavant, d'où l'approche de ma question!
Memcache est un excellent outil encore et TRÈS fiable.
au lieu de regarder ce problème du point de vue du plus rapide dans la plage <100 ms, examinez les performances par "classe" du logiciel.
Cela dépend de ce dont vous avez besoin. En général, je pense que:
Il est difficile de choisir le bon moment sans un cas d'utilisation, mais je pense que pour beaucoup de choses, Redis est logique, car même si vous ne voulez pas l'utiliser comme base de données, vous serez beaucoup plus capable de résoudre plus de problèmes, pas seulement la mise en cache, mais même la messagerie, le classement, etc.
P.s. Bien sûr, je pourrais être biaisé puisque je suis le développeur principal du projet Redis.
Alors, 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?
Redis
a beaucoup plus de fonctionnalités;Redis
est également beaucoup plus facile. Aucune dépendance requiseRedis
est également préférable;memcached
est un peu plus rapide que Redis
. Il ne touche pas du tout le disque.Redis
est un meilleur produit que memcached
.Ce que ne fait pas Redis en mémoire, c’est l’expulsion la moins récente des valeurs 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 la mémoire, celles que vous n'avez pas utilisées récemment sont supprimées. Avec Redis, vous ne pouvez que vous en approcher, en définissant un délai d'expiration pour tout; lorsqu'il aura besoin de libérer de la mémoire, il examinera trois clés aléatoires et supprimera celle qui est la plus proche d'expiration.
C'est la principale différence si vous l'utilisez comme cache.
Vous voudrez peut-être aussi regarder Membase.
http://www.northscale.com/products/membase_server.html
Je ne l'ai pas utilisé, mais il semble ressembler à Redis en ce qu'il s'agit d'un magasin KV centré sur la mémoire et persistant. Les principales différences par rapport à ce que je peux voir sont les suivantes:
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 fil 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 de la fonctionnalité supplémentaire de manipulation de données de Redis.
Hazelcast supporte nativement le protocole memcached
et est donc une alternative moderne à memcached. Vous devriez essayer toutes les solutions pour voir ce qui vous convient le mieux.