Redis ou Ehcache?
mais adequado para o seguinte ambiente:
-
A persistência não é uma compulsão.
- são necessários vários servidores (com Ehcache é necessária alguma sincronização de 'cache').
- base de dados relativamente pequena (muito menos necessidades de memória).
= = ligações externas = =
Eu sei que o Redis precisa de um servidor separado (?) e Ehcache fornece informações locais cache então deve ser mais rápido, mas irá replicar cache através de servidores (?). Atualizar todos os caches após alguma atualização em um é possível com Ehcache.
A minha pergunta é: qual será melhor para o ambiente que mencionei?Que desempenho será melhor ou o que são cenários quando um pode superar outro? Obrigado antecipadamente.
2 answers
Pode pensar que o Redis é uma estrutura de dados partilhada, enquanto o Ehcache é um Bloco de memóriaa armazenar objectos de dados serializados. Esta é a principal diferença.
Redis como um estrutura de dados compartilhados significa que você pode colocar um pouco de predefinidos estrutura de dados (como String, Lista, Conjunto etc) em um idioma e recuperá-la em outro idioma. Isto é útil se o seu projecto formultilingue , por exemplo: do lado da infra-estrutura, e PHP do lado da frente. Você pode usar o Redis para um cache compartilhado. Mas ele só pode armazenar estrutura de dados predefinida, você não pode inserir qualquer objeto Java que você deseja.
Se o seu projecto é apenas Java, ou seja, não multilingue , O Ehcache é uma solução conveniente.
Você vai encontrar problemas com a escala EhCache e precisa de recursos para geri-lo durante o failover e etc. redirigir os benefícios sobre EhCache:
-
Usa o protocolo de mexericos para a descoberta e sincronização de nós.
- Disponibilidade de serviços totalmente geridos como AWS ElastiCache, Azure Redis Cache. Tais serviços oferecem automação completa, suporte e gestão da Redis, para que os desenvolvedores possam se concentrar em suas aplicações e não manter as bases de dados deles.
- corrigir o manuseamento de grande quantidade de memória (todos sabemos que o Redis pode gerir com centenas de gigabytes de memória RAM numa única máquina). Não tem problemas com a recolha de lixo como Java.
E finalmente a existência de Java Developer friendly Redis client - Redisson .
Redisson fornece muitos objetos amigáveis Java em cima do Redis , tipo:
- Conjunto
- ConcurrentMap
- Lista
- fila
- Deque
- BlockingQueue
- BlockingDeque
- ReadWriteLock
- semáforo
- Bloqueio
- AtomicLong
- CountDownLatch [[6]}Publicar / Subscrever
- ExecutorService
- e muitos mais...
O Redisson suporta cache local para a estrutura do mapa que o frio lhe dá 45x Aumento de desempenho para leitura operacao.
([1]} Aqui está o artigo descrevendo a experiência da Sociedade de Capital Pessoal de transição de EhCache para Redis