start memcache jellycan code cluster caching memory memcached redis

caching - jellycan - Memoria Memcache vs Java



start memcache (4)

Acabo de hacer un punto de referencia entre un mapa hash concurrente, memcached y MySQL.

Aquí están los resultados:

Tipo Insertar búsqueda Eliminar

ConcurrentHashMap 264ms 93ms 82ms

Memcached 6549ms 5976ms 4900ms

Mysql 55754ms 26002ms 57899ms

Se utilizó un grupo de subprocesos para este punto de referencia.

Puede encontrar más información aquí: http://www.incentergy.de/2013/12/big-data-architecture-patterns-for-performance/

Además, la siguiente memoria caché podría ser una alternativa a memcached: https://code.google.com/p/kitty-cache/

Pregunta simple, probablemente tonta: Supongamos que tengo un servidor Java que almacena en la memoria las claves y los valores comúnmente utilizados que puedo consultar (digamos en un HashMap)

¿Cuál es la diferencia entre eso y el uso de Memcache (o incluso Redis)? Ambos almacenan cosas en la memoria. ¿Hay algún beneficio para uno u otro? ¿Memcache deja menos huella de memoria? Puede almacenar más en menos memoria? Más rápido para consultar? ¿Ninguna diferencia?


Básicamente, si tenemos algunos servidores de aplicaciones, parece que tenemos que usar Memcached.


Depende de lo que te falte Un mapa en memoria será más rápido; la caducidad de datos no es realmente un problema (ver: MapMaker Google Guava, que puede crear un mapa que expira entradas después de lecturas y / o escrituras, y no olvidemos cosas como OSCache y EHCache , sin mencionar cosas distribuidas como GigaSpaces XAP o Coherence )

Los proyectos de almacenamiento en caché (XAP, OSCache, EhCache, Coherence, etc.) pueden distribuir entradas de caché, por lo que obtiene fragmentación natural y otras instalaciones; Coherence puede administrar transacciones y escritura, y XAP está diseñado para servir como un sistema de registro (donde la escritura se sincroniza y replica, de modo que está utilizando una cuadrícula de datos en memoria como su mecanismo de almacenamiento de datos real en lugar de usando una base de datos.)

Memcached es ... bueno, puede acceder a una instancia de servidor memcached desde una serie de máquinas. Memcached como API es simplemente un almacén de claves / valores, y la distribución se realiza completamente en el lado del cliente. Ciertamente tiene los fundamentos, supongo, y definitivamente tiene API de múltiples idiomas, pero de lo contrario es bastante flojo.

(Por cierto, GigaSpaces tiene una capa Memcached, por lo que teóricamente puedes usar memcached como un sistema de registro ...)


Ventajas de la memoria Java sobre Memcache:

  1. La memoria Java es más rápida (sin red).
  2. La memoria Java no requerirá serialización, tiene objetos Java disponibles para usted.

Ventajas de Memcache sobre la memoria de Java:

  1. Se puede acceder por más de un servidor de aplicaciones, por lo que su caché se compartirá entre todos sus servidores de aplicaciones.
  2. Se puede acceder por una variedad de servidores diferentes, siempre y cuando todos estén de acuerdo en el esquema de claves y la serialización.
  3. Descartará los valores caché caducados, por lo que obtendrá la invalidación basada en el tiempo.