Tecnologías de almacenamiento en caché utilizadas habitualmente
Capítulo 1 Tecnologías de almacenamiento en caché de uso común
1. Dos cachés comunes
Caché local: no requiere serialización, velocidad rápida, 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 uso a gran escala en sistemas distribuidos)
Fácil de usar (esto se compara con Redis cuando; 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)
Redis
cadenas: gt; es decir, clave-valor simple, que 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, algunas de las siguientes estructuras de datos se pueden almacenar primero) Encapsular cosas en objetos y luego almacenarlas en Memcached Sin embargo, no se recomienda almacenar objetos grandes en Memcached debido a la capacidad máxima de almacenamiento de un. El valor único en Memcached es 1M. Incluso si se utiliza el algoritmo de compresión, puede que no sea suficiente. Incluso si es suficiente, la eficiencia del acceso puede ser baja (no es alta y el valor máximo de redis es 1G).
hashs--gt; visto como hashTable
listas--gt; visto como LinkedList
sets- -gt; de hecho, la capa inferior es una tabla hash.
conjuntos ordenados: gt; la capa inferior es una skipList
Hay dos formas de conservar los datos almacenados en caché
p>
RDB
AOF
Programación de eventos
Publicar y suscribirse, etc.
4. Caché integrado
Se refiere específicamente al caché de primavera. Spring cache hereda ehcache como clase de implementación de caché. También podemos usar guava cache, memcached y 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 ahora es la empresa promedio; 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 y redis como caché distribuido. Spring cache es un caché integrado (la capa inferior se implementa usando redis)
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é (anotado con método), usando redis como su clase de implementación es para 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 es necesario Para usar el almacenamiento en caché distribuido, redis es imprescindible primero, porque en el desarrollo real almacenaremos en caché varios tipos de datos. Mientras usamos redis, memcached se puede descartar por completo, pero ahora todavía hay muchas empresas que utilizan cachés de memcached y redis.