Técnicas de almacenamiento en caché más utilizadas
Capítulo 1 Tecnologías de almacenamiento en caché de uso común
1. Dos cachés comunes
Caché local: sin necesidad de serialización, rápido, la cantidad de cachés es la misma que El tamaño está limitado por la memoria local
Caché distribuida: requiere serialización y es más lento que el caché local, pero teóricamente la cantidad y el tamaño de los cachés son ilimitados (porque la máquina de caché puede continuar expandiéndose)
p>2. Caché local
Caché de guayaba de Google: el caché local más útil en este momento
Ehcache: un caché integrado por Spring de forma predeterminada, implementado con el caché subyacente. de spring cache Es muy conveniente operar el caché en forma de clase, pero carece de flexibilidad. Si desea usarlo de manera flexible, aún debe usar Ehcache solo
Oscache: el caché de página más clásico y simple.
3. Distribución
Memcached: la configuración estándar de caché distribuida
Redis: una nueva generación de caché distribuida, con tendencia a sustituir a memcached
3.1, memcached
p>Algoritmo hash consistente clásico
El modelo de memoria basado en losa puede prevenir eficazmente la generación de fragmentación de la memoria (pero al mismo tiempo, el inicio los parámetros deben estimarse bien; de lo contrario, se desperdiciará mucha memoria)
Las máquinas en el clúster no se comunican entre sí (en comparación con cachés como Jboss cache, que se comunican entre sí entre máquinas en el clúster, es más rápido<--porque hay menos gastos generales de actualización sincrónica del caché y es más adecuado para la distribución a gran escala utilizada en el sistema)
Fácil de usar (esto se compara a Redis al construir el cliente, aunque el uso de redis no es difícil)
Muy dedicado (Especializado en almacenamiento en caché, esto también se compara con Redis)
3.2, Redis
Puede almacenar estructuras de datos complejas (5 tipos)
cadenas --> Es decir, clave-valor simple es la única forma que Memcached puede almacenar. Los siguientes cuatro son los cuatro formatos que Memcached no puede almacenar. almacenar directamente (por supuesto, en teoría, primero puede colocar las cosas en algunas de las siguientes estructuras de datos, encapsularlas en un objeto y luego almacenarlas en Memcached. Sin embargo, no se recomienda almacenar objetos grandes en Memcached porque el almacenamiento máximo La capacidad de un solo valor en Memcached es 1M. Incluso si se usa el algoritmo de compresión, puede que no sea suficiente. Incluso si es suficiente, la eficiencia del acceso puede no ser alta y el valor máximo de redis es 1G. p>
hashs-->ver como hashTable
listas-->ver como LinkedList
conjuntos-->ver como hashSet, de hecho, la capa inferior es una hashTable
conjuntos ordenados-->la capa inferior es una skipList
Hay dos formas de conservar los datos almacenados en caché
RDB
AOF p>
Programación de eventos
Publicar y suscribirse, etc.
4. Caché integrado
Se refiere específicamente al caché de Spring que hereda ehcache. la clase de implementación de caché. También podemos usar guava cache, memcached y el propio redis para implementar la capa inferior de spring cache. Por supuesto, Spring Cache puede almacenar el caché localmente o en una máquina remota según la clase de implementación.
5. Almacenamiento en caché de páginas
Cuando usemos jsp, usaremos Oscache para almacenar en caché algunas páginas complejas. Es muy simple de usar, solo unas pocas etiquetas, pero hoy en día la mayoría de las empresas; utilizará motores de plantillas de velocidad y freemaker en la recepción. La velocidad en sí ya es muy rápida y el caché de página rara vez se usa.
Resumen:
En la producción real, generalmente usamos guava cache como caché local + redis como caché distribuido + spring cache como caché integrado (la capa inferior se implementa usando redis) Formulario
Guava cache se usa para obtener datos almacenados en caché más rápido y la cantidad de datos almacenados en caché no es grande
El caché integrado de Spring cache es para un uso simple y conveniente del caché (para El método de anotación es suficiente ), usar redis como clase de implementación es almacenar más datos en la máquina
El caché de Redis se usa solo para compensar la inflexibilidad del caché integrado de Spring Cache
Personalmente, Si necesita usar caché distribuido, primero debe usar Redis, porque en el desarrollo real almacenaremos en caché varios tipos de datos. Mientras usamos Redis, Memcached se puede abandonar por completo, pero todavía hay muchas empresas que usan Memcached y Redis. cachés.