sql >> Base de Datos >  >> NoSQL >> Redis

Caché de aplicaciones vs. caché de segundo nivel de hibernación, ¿cuál usar?

Realmente depende del modelo de consulta de su aplicación y de las demandas de tráfico.

  1. El uso de Redis/Hazelcast puede generar el mejor rendimiento, ya que ya no habrá ningún viaje de ida y vuelta a la base de datos, pero terminará teniendo datos normalizados en la base de datos y una copia desnormalizada en su caché, lo que ejercerá presión sobre la actualización de su caché. políticas Por lo tanto, obtiene el mejor rendimiento a costa de implementar la actualización de caché siempre que cambien los datos persistentes.
  2. Usar caché de segundo nivel es más fácil de configurar, pero solo almacena entidades por ID. También hay un caché de consultas, que almacena los identificadores devueltos por una consulta determinada. Por lo tanto, la memoria caché de segundo nivel es un proceso de dos pasos que debe ajustar para obtener el mejor rendimiento. Cuando ejecuta consultas de proyección, el caché de objetos de segundo nivel no lo ayudará, ya que solo opera en la carga de entidades. La principal ventaja de la memoria caché de segundo nivel es que es más fácil mantenerla sincronizada cada vez que cambian los datos, especialmente si Hibernate conserva todos sus datos.

Por lo tanto, si necesita el máximo rendimiento y no le importa implementar su lógica de actualización de caché que garantice una ventana mínima de consistencia final, entonces opte por una caché externa.

Si solo necesita almacenar entidades en caché (que generalmente no cambian con tanta frecuencia) y accede principalmente a ellas a través de la carga de entidades de Hibernate, entonces el caché de segundo nivel puede ayudarlo.