Red de conocimiento informático - Material del sitio web - Cómo utilizar Redis para el almacenamiento en caché de MySQL

Cómo utilizar Redis para el almacenamiento en caché de MySQL

Utilice Redis para leer y escribir datos y utilice el procesador de cola para escribir datos en MySQL con regularidad.

Al mismo tiempo, preste atención para evitar conflictos. Cuando se inicie redis, vaya a mysql para leer todas las claves de la tabla en redis y guárdelas en redis. Al escribir en redis, incremente la clave principal de redis. Léalo. Si la actualización de MySQL falla, debe borrar el caché y sincronizar la clave principal de Redis a tiempo.

Este método de procesamiento lee y escribe principalmente redis en tiempo real y procesa datos de MySQL de forma asíncrona a través de la cola para reducir la presión sobre MySQL. Sin embargo, el escenario de aplicación de este método se basa principalmente en una alta concurrencia. alta disponibilidad de redis. La arquitectura del clúster es relativamente más compleja y generalmente no se recomienda.

"Base de datos en memoria y mecanismo de sincronización mysql"

Cómo sincronizar redis con la base de datos mysql

Programa a/question/23401553?sort=created

El programa implementa mysql para actualizar, agregar, eliminar y luego eliminar datos de redis.

El programa consulta redis y, cuando no existe, consulta mysql y guarda redis.

La sincronización de datos entre redis y mysql, el nivel de código puede ser aproximadamente el siguiente:

Leer: leer redis ->No existe, leer mysql->Escribir datos de mysql nuevamente en redis

Escribir. Escribir mysql-> Éxito, escribir en redis (capturar todas las modificaciones de mysql, escribir y eliminar eventos en redis)

Opción 2/Linux/2015-01/380.htm

Real- time Obtenga el binlog de mysql, analícelo y luego modifique redis

Solución de datos de MySQL a Redis

Tanto MySQL como Redis tienen su propio mecanismo de sincronización de datos, al igual que el MySQL más utilizado. El modo Maestro/Esclavo se implementa analizando el binlog del Maestro en el lado Esclavo, por lo que los datos en realidad siguen siendo un proceso asincrónico, pero cuando todos los servidores están en la misma intranet, el retraso asincrónico puede ser casi ignorado.

En teoría, podemos analizar el archivo binlog de MySQL e insertar datos en Redis de la misma manera, pero esto requiere una comprensión muy profunda del archivo binlog y de MySQL, y debido a la Declaración/Fila/ Binlog de nivel mixto Hay muchas formas, por lo que para lograr la sincronización, la carga de trabajo de analizar binlog es muy pesada. La cantidad de trabajo necesaria para lograr la sincronización es muy grande.

Así que elegimos un método de desarrollo de menor costo: tomamos prestada la UDF de MySQL madura, importamos datos de MySQL a Gearman y luego sincronizamos los datos con Redis a través del PHP Gearman Worker escrito por nosotros mismos. Este enfoque es más barato de implementar y más sencillo de operar.

Opción 3

Usando la UDF de MySQL, consulte MySQL::MySQL 5.1 Reference Manual::22.3 Agregar nuevas funciones a MySQL para obtener más información, luego actualizar e insertar en tablas Luego use un disparador para llamar a la función. Escribe en redis. Esto es más o menos lo que parece.

/question/27738066

1. Lo primero que hay que dejar claro es si es necesario almacenar en caché, que es donde radica el cuello de botella de la arquitectura actual, si realmente reside el cuello de botella. en las operaciones de la base de datos, luego continúe buscando hacia abajo.

2. Aclare la diferencia entre memcached y redis, y cuál usar.

El primero es, en última instancia, un caché, es imposible guardar datos de forma permanente (mecanismo LRU) y admite la distribución. Además del almacenamiento en caché, el segundo también admite la persistencia de datos en el disco. Redis implementa su propio caché distribuido (parece estar integrado en el). última versión). Implementó la coherencia del hash usted mismo. Como no entiendo el escenario de su aplicación, no puedo decir si debe usar Memcache o Redis. Puede ser mejor usar MongoDB, por ejemplo, en términos de almacenamiento de registros.

3. Almacene en caché una gran cantidad de datos que no cambian con frecuencia, como comentarios.

4. Su idea es correcta, concisa y clara, lea la base de datos antes de leer el caché, regrese directamente si hay una, lea la base de datos si no, luego escriba en la capa de caché y regrese.

5. Considere si se necesita separación maestro-esclavo, lectura-escritura, si se necesita implementación distribuida y si se necesita expansión horizontal posterior.

6. Si desea hacer las cosas de una vez por todas y facilitar el mantenimiento y la expansión posteriores, optimice la arquitectura del código existente de acuerdo con la gran cantidad de código que debe cambiarse cuando reemplace el. componentes de la base de datos, indica que hay problemas con la arquitectura actual. Puede utilizar marcos existentes, como SpringMVC, para desacoplar la capa de aplicación y la capa empresarial de la capa de base de datos. Haga esto antes de volver al caché.

7. Convierta el almacenamiento en caché de lectura y otras operaciones en componentes de servicio, proporcione servicios a la capa empresarial y la capa empresarial proporcione servicios a la capa de aplicación.

8. Conserve los componentes de la base de datos originales y optimícelos en componentes de servicio para que la capa empresarial posterior pueda llamar de manera flexible al caché o la base de datos.

9. No se recomienda almacenar en caché todos los datos a la vez. Cuando el negocio principal no se mueve al principio, primero puede cambiar el negocio perimetral al componente de caché y luego transferirlo gradualmente al. negocio principal.

10. Actualice la memoria, tomando Memcached como ejemplo. Las operaciones de agregar, modificar y eliminar generalmente adoptan la estrategia de carga diferida, es decir, solo escribe en la base de datos al agregar, y Memcached no se actualizará inmediatamente. , pero esperará hasta que se vuelva a leer. Solo entonces se cargará en Memcached. Las operaciones de modificación y eliminación también actualizarán la base de datos y luego marcarán los datos en Memcached como no válidos y esperarán la siguiente lectura antes de cargar.