web-dev-qa-db-fra.com

Redis ou Ehcache?

Quel est le mieux adapté à l'environnement suivant:

  1. La persistance n'est pas une contrainte.
  2. Plusieurs serveurs (avec Ehcache, une synchronisation du cache doit être requise).
  3. Écritures peu fréquentes et lectures fréquentes.
  4. Base de données relativement petite (très peu de mémoire requise).

Je vais verser ce qui est dans ma tête actuellement. Je peux me tromper à ce sujet.

Je sais que Redis nécessite un serveur distinct (?) Et Ehcache fournit un cache local. Il doit donc être plus rapide, mais le répliquer sur plusieurs serveurs (?). La mise à jour de tous les caches après une mise à jour sur un est possible avec Ehcache.

Ma question est celle qui conviendra le mieux pour l'environnement que j'ai mentionné?
Quelles performances seront meilleures ou quels sont les scénarios dans lesquels une personne peut surperformer une autre?

Merci d'avance.

14
Sachin Sharma

Vous pouvez penser Redis comme une structure de données shared, tandis que Ehcache est un bloc de mémoire stockant des objets de données sérialisés. C'est la principale différence.

Redis comme une structure de données partagée _ signifie que vous pouvez mettre une structure de données prédéfinie (telle que String, Liste, Définiretc ) dans une langue et récupérez-la dans une autre langue. Ceci est utile si votre projet est multilingue, par exemple: Java du côté serveur et PHP du côté principal. Vous pouvez utiliser Redis pour un cache partagé. Mais il ne peut stocker que des structures de données prédéfinies, vous ne pouvez insérer aucun objet Java souhaité.

Si votre projet est uniquement Java, c'est-à-dire pas multilingue, Ehcache est une solution pratique. 

30
smallufo

Vous rencontrerez probablement des problèmes avec la mise à l'échelle EhCache et aurez besoin de ressources pour le gérer en cas de basculement, etc. Les avantages de Redis par rapport à EhCache:

  1. Il utilise le protocole gossip éprouvé dans le temps pour la découverte et la synchronisation de nœuds. 
  2. Disponibilité de services entièrement gérés tels que AWS ElastiCache , Cache Azure Redis . Ces services offrent une automatisation, un support et une gestion complets de Redis, permettant ainsi aux développeurs de se concentrer sur leurs applications et non sur la maintenance de leurs bases de données.
  3. Corrigez le traitement de grandes quantités de mémoire (nous savons tous que Redis peut gérer des centaines de gigaoctets de RAM sur un seul ordinateur). Il n'a pas de problèmes avec la récupération de place comme Java.

Et enfin l'existence d'un client Redis adapté aux développeurs Java - Redisson . Il fournit de nombreux objets conviviaux Java au-dessus de Redis, tels que - Set, ConcurrentMap, List, Queue, Deque, BlockingQueue, BlockingDeque, ReadWriteLock, Semaphore, Lock, AtomicLong, CountDownLatch, Publish/Subscribe, ExecutorService et bien d’autres. En outre, il prend en charge le cache local pour la structure de la carte, ce qui vous donne 45x une amélioration des performances pour les opérations de lecture.

Voici l'article décrivant l'expérience de la société Personal Capital de transition de EhCache à Redis

2
Nikita Koksharov