Lea la base de datos de Redis en tres minutos
1. ¿Cuáles son los beneficios de usar Redis?
(1) Rápido porque los datos existen en la memoria. Similar a HashMap, la ventaja de HashMap es que la complejidad temporal de la búsqueda y la operación es O (1).
(2) Admite tipos de datos enriquecidos, cadenas, listas, conjuntos, conjuntos ordenados y hashes.
(3) Admite transacciones, todas las operaciones son atómicas. La llamada atomicidad significa que todos los cambios en los datos se ejecutan o no.
(4) Funciones enriquecidas: se pueden utilizar para almacenar mensajes en caché. Presione el botón para configurar el tiempo de vencimiento y se eliminará automáticamente después del vencimiento.
2. ¿Qué ventajas tiene Redis sobre Memcached?
(1) Todos los valores de memcached son cadenas simples y redis, como reemplazo, admite tipos de datos más ricos.
(2) redis es mucho más rápido que memcached.
(3) Redis puede conservar sus datos.
3. Problemas y soluciones comunes de rendimiento de Redis:
(1) Es mejor que Master no realice ningún trabajo de persistencia, como instantáneas de memoria RDB y archivos de registro AOF.
(2) Si los datos son muy importantes, el esclavo inicia AOF para hacer una copia de seguridad de los datos y la política está configurada para sincronizarse una vez por segundo.
(3) Para la velocidad de replicación maestro-esclavo y la estabilidad de la conexión, el maestro y el esclavo deben estar en la misma LAN.
(4) Intente evitar agregar bibliotecas esclavas a la biblioteca principal estresada.
(5) La replicación maestro-esclavo no utiliza una estructura gráfica, pero una estructura de lista vinculada unidireccional es más estable, es decir, maestra
Esta estructura es fácil de resolver El problema de la falla de un solo punto y realizar el reemplazo maestro-esclavo. Si el dispositivo maestro se bloquea, puede habilitar inmediatamente el Esclavo1 como dispositivo maestro y dejar el resto sin cambios.
4.MySQL tiene 20 millones de datos y Redis solo tiene 200.000 datos. ¿Cómo garantizar que los datos en Redis sean datos activos?
Conocimientos relacionados: cuando el tamaño del conjunto de datos de la memoria de Redis aumenta a un cierto tamaño, se implementará la estrategia de eliminación de datos. Redis proporciona seis estrategias de eliminación de datos:
Voltile-lru: seleccione los datos utilizados menos recientemente (server.db[i]) del conjunto de datos. Caducado) para ser eliminado.
Volatile-ttl: Selecciona los datos que caducan del conjunto de datos (server.db[i]). Caducado) para ser eliminado.
Volatile-random: Selecciona datos del conjunto de datos (server.db[i]). Caducidad) y el tiempo de caducidad establecido.
Allkeys-lru: selecciona los datos utilizados menos recientemente (server.db[i]) del conjunto de datos. dict) para su eliminación.
Allkeys-random: Selecciona datos del conjunto de datos (server.db[i]). dict) se puede eliminar a voluntad.
Desactivar el desalojo de datos.
Recomendaciones relacionadas: vídeo tutorial de Python
5. ¿Cuál es la diferencia entre MemCache y Redis?
1), Modo de almacenamiento
Memecache almacena todos los datos en la memoria y se suspenderá después de un corte de energía. Los datos no pueden exceder el tamaño de la memoria.
La parte de Redis se almacena en el disco duro, lo que puede garantizar la durabilidad de los datos.
2) Tipos de soporte de datos
El soporte de Memcache para tipos de datos es relativamente simple.
Redis tiene tipos de datos complejos.
3) Tamaño del valor
Redis puede alcanzar un máximo de 1 GB, mientras que Memcache es de solo 1 MB.
6.¿Cuáles son los problemas de rendimiento comunes de Redis? ¿Cómo solucionarlo?
1).Master escribe una instantánea de la memoria y el comando guardar programa la función rdbSave, que bloqueará el trabajo del hilo principal. Cuando la instantánea es grande, tendrá un gran impacto en el rendimiento y el servicio se suspenderá de forma intermitente, por lo que es mejor no escribir instantáneas de memoria.
2) Persistencia de AOF de control principal. Si el archivo AOF no se reescribe, este método de persistencia tiene el menor impacto en el rendimiento, pero el archivo AOF seguirá creciendo y afectará el reinicio. del control principal. Es mejor que Master no realice ningún trabajo de persistencia, incluidas instantáneas de memoria y archivos de registro AOF, especialmente para no habilitar instantáneas de memoria para la persistencia. Si los datos son críticos, el esclavo abrirá AOF para hacer una copia de seguridad de los datos y la política es sincronizarlos una vez por segundo.
3).Master llama a BGREWRITEAOF para reescribir el archivo AOF. La reescritura ocupará muchos recursos de CPU y memoria, lo que provocará una alta carga del servicio y un corto tiempo de suspensión del servicio.
4) Problemas de rendimiento de la replicación maestro-esclavo de Redis Para la velocidad de la replicación maestro-esclavo y la estabilidad de la conexión, es mejor que el maestro-esclavo esté en la misma LAN.
7. Escenarios más adecuados para Redis
Redis es el más adecuado para todos los escenarios de almacenamiento de datos. Aunque Redis también proporciona una función de persistencia, en realidad es una función de copia de seguridad del disco, que es muy diferente de la persistencia tradicional. Entonces tal vez todos tengan preguntas. Parece que Redis se parece más a una versión mejorada de Memcached, entonces, ¿cuándo usar Memcached y cuándo usar Redis?
Si simplemente comparas la diferencia entre Redis y Memcached, la mayoría de la gente obtendrá las siguientes opiniones:
1. Redis no solo admite datos k/v simples, sino que también proporciona listas. set, Almacenamiento de estructuras de datos como zset y hash.
2.Redis admite la copia de seguridad de datos, es decir, la copia de seguridad de datos en modo maestro-esclavo.
3.Redis admite la persistencia de datos. Puede guardar los datos en la memoria en el disco y cargarlos nuevamente al reiniciar.
(1) Caché de sesión
Uno de los escenarios más comunes para usar Redis es el caché de sesión. La ventaja de utilizar Redis para almacenar sesiones en caché en comparación con otras tiendas como Memcached es la persistencia que proporciona Redis. Al mantener un caché que no es estrictamente consistente, la mayoría de las personas no estarán contentas si se pierde toda la información del carrito de compras del usuario. ¿Seguirán haciendo esto ahora?
Afortunadamente, a medida que Redis ha mejorado a lo largo de los años, es fácil descubrir cómo utilizar Redis correctamente para almacenar en caché los documentos de una sesión. Incluso la conocida plataforma comercial Magento proporciona complementos para Redis.
(2) Caché de página completa (FPC)
Además de los tokens de sesión básicos, Redis también proporciona una plataforma FPC muy simple. Volviendo al problema de coherencia, incluso si se reinicia la instancia de Redis, los usuarios no verán una disminución en la velocidad de carga de la página debido a la persistencia del disco. Esta es una gran mejora, similar al FPC local de PHP.
Tomando Magento nuevamente como ejemplo, Magento proporciona un complemento para usar Redis como backend de caché de página completa.
Además, ¿Pantheon tiene un complemento realmente bueno para los usuarios de WordPress? Wp-redis, este complemento te ayuda a cargar las páginas que visitas lo más rápido posible.
(3) Cola
Una de las ventajas de Reid en el campo de los motores de almacenamiento de memoria es que proporciona operaciones de lista y configuración, lo que convierte a Reid en una buena plataforma de cola de mensajes. El funcionamiento de Redis como cola es similar al funcionamiento push/pop de un lenguaje de programación local (como Python) en una lista.
Si realiza una búsqueda rápida en Google de "colas de Redis", encontrará inmediatamente una gran cantidad de proyectos de código abierto. El propósito de estos proyectos es crear herramientas de backend muy agradables utilizando Redis para diversas necesidades de colas. Por ejemplo, Celery tiene experiencia en el uso de Redis como corredor. Puedes verlo desde aquí.
(4) Tabla de clasificación/Contador
Redis funciona bien con números crecientes o decrecientes en la memoria. Las colecciones y las colecciones ordenadas también nos facilitan mucho la realización de estas operaciones, y Redis proporciona exactamente estas dos estructuras de datos. Entonces, necesitamos obtener los 10 mejores usuarios del conjunto ordenado, llamémoslo "user_scores", y lo hacemos de la siguiente manera:
Por supuesto, esto supone que lo haces en función de las puntuaciones del usuario. Clasificación incremental. Si desea devolver los usuarios y sus puntuaciones, debe hacer esto:
rango z usuario _ puntuaciones 0 10 con puntuaciones
Agora Games es un buen ejemplo, implementado en Ruby. Su tabla de clasificación utiliza Redis para almacenar datos, que puedes ver aquí.
(5) Publicar/Suscribir
Por último (pero ciertamente no menos importante) está la función de publicación/suscripción de Redis. De hecho, existen muchos casos de uso para publicar/suscribir. He visto a personas usarlo en conexiones de redes sociales, también se puede usar como un disparador de script basado en publicación/suscripción, o incluso usar la funcionalidad de publicación/suscripción de Redis para crear un sistema de chat. No, es verdad. Puedes ir y echar un vistazo.