Compartir tecnología

Preguntas de la entrevista de operación y mantenimiento de Redis

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Para ayudar a todos en el proceso de la entrevista, para los estudiantes que aún no están seguros acerca de Redis, hemos recopilado 40 preguntas comunes de la entrevista sobre Redis para que no entren en pánico durante la entrevista y se esfuercen por obtener la oferta.

1. ¿Qué es Redis?

Redis es completamente de código abierto y gratuito, cumple con el protocolo BSD y es una base de datos clave-valor de alto rendimiento.

En comparación con otros productos de almacenamiento en caché de valores clave, Redis tiene las siguientes tres características:

  • Redis admite la persistencia de datos. Puede guardar los datos en la memoria en el disco y cargarlos nuevamente para usarlos al reiniciar.

  • Redis no solo admite datos de tipo clave-valor simples, sino que también proporciona almacenamiento de estructuras de datos como list, set, zset y hash.

  • Redis admite la copia de seguridad de datos, es decir, la copia de seguridad de datos en modo maestro-esclavo.

Ventajas de Redis:

  • Rendimiento extremadamente alto: Redis puede leer a una velocidad de 110.000 veces/s y escribir a una velocidad de 81.000 veces/s.

  • Tipos de datos enriquecidos: Redis admite operaciones de tipos de datos de cadenas, listas, hashes, conjuntos y conjuntos ordenados en casos binarios.

  • Atómica: todas las operaciones en Redis son atómicas, lo que significa que se ejecutan con éxito o no se ejecutan en absoluto. Las operaciones individuales son atómicas. Las operaciones múltiples también admiten transacciones, es decir, atomicidad, envueltas por instrucciones MULTI y EXEC.

  • Funciones ricas: Redis también admite publicación/suscripción, notificaciones, caducidad de claves y otras funciones.

¿En qué se diferencia Redis de otras tiendas de valores clave?

Redis tiene estructuras de datos más complejas y proporciona operaciones atómicas sobre ellas. Este es un camino evolutivo diferente al de otras bases de datos. Los tipos de datos de Redis se basan en estructuras de datos básicas y son transparentes para los programadores, sin necesidad de abstracciones adicionales.

Redis se ejecuta en la memoria pero se puede conservar en el disco, por lo que existe un compromiso de memoria al realizar lecturas y escrituras a alta velocidad de diferentes conjuntos de datos, porque la cantidad de datos no puede ser mayor que la memoria del hardware. Otra ventaja de las bases de datos en memoria es que, en comparación con las mismas estructuras de datos complejas en el disco, operar en la memoria es muy simple, por lo que Redis puede hacer muchas cosas con una gran complejidad interna. Además, en términos de formato de disco, son compactos y se generan mediante anexos, ya que no requieren acceso aleatorio.

2. ¿Cuáles son los tipos de datos de Redis?

Redis admite cinco tipos de datos: cadena (cadena), hash (hash), lista (lista), conjunto (conjunto) y conjunto zsetsorted (conjunto ordenado).

Los más utilizados en nuestros proyectos reales son string y hash. Si es un usuario intermedio y avanzado de Redis, también debe agregar las siguientes estructuras de datos HyperLogLog, Geo y Pub/Sub.

Si dice que también ha jugado con Redis Module, como BloomFilter, RedisSearch y Redis-ML, los ojos del entrevistador comenzarán a brillar.

3. ¿Cuáles son los beneficios de usar Redis?

  • Es rápido porque los datos se almacenan en la memoria, similar a HashMap. La ventaja de HashMap es que la complejidad temporal de la búsqueda y la operación es O1).

  • Admite tipos de datos enriquecidos, incluidos cadenas, listas, conjuntos, Zset, hash, etc.

  • Las transacciones de soporte y las operaciones son todas atómicas. La llamada atomicidad significa que todos los cambios en los datos se ejecutan o no se ejecutan en absoluto.

  • Funciones ricas, se pueden utilizar para almacenamiento en caché, mensajería, configuración del tiempo de caducidad por clave, se eliminarán automáticamente después de la caducidad.

4. ¿Cuáles son las ventajas de Redis respecto a Memcached?

  • Todos los valores en Memcached son cadenas simples y Redis, como reemplazo, admite clases de datos más ricas.

  • Redis es mucho más rápido que Memcached

  • Redis puede conservar sus datos

5. ¿Cuáles son las diferencias entre Memcache y Redis?

  • El método de almacenamiento Memecache almacena todos los datos en la memoria. Se colgará después de un corte de energía. Los datos no pueden exceder el tamaño de la memoria. Redis se almacena parcialmente en el disco duro, lo que garantiza la durabilidad de los datos.

  • Tipos de soporte de datos El soporte de Memcache para tipos de datos es relativamente simple. Redis tiene tipos de datos complejos.

  • Los modelos subyacentes utilizados son diferentes en sus métodos de implementación subyacentes y protocolos de aplicación para la comunicación con los clientes. Redis construye directamente su propio mecanismo de VM, porque si el sistema general llama a funciones del sistema, perderá una cierta cantidad de tiempo para moverse y solicitar.

6. ¿Redis es de un solo proceso y de un solo subproceso?

Redis es un proceso único y un subproceso único. Redis utiliza tecnología de cola para convertir el acceso concurrente en acceso en serie, eliminando la sobrecarga del control en serie de la base de datos tradicional.

7. ¿Cuál es la capacidad máxima de un almacenamiento inteligente tipo cadena?

512M。

8. ¿Cuál es el mecanismo de persistencia de Redis? ¿Cuales son las ventajas y desventajas de cada uno?

Redis proporciona dos mecanismos de persistencia, mecanismos RDB y AOF:

Método de persistencia RDB (Redis DataBase): se refiere a registrar todos los pares clave-valor de la base de datos de Redis en un modo semipersistente utilizando una instantánea del conjunto de datos y escribir los datos en un archivo temporal en un momento determinado después de la persistencia. Una vez completado, utilice este archivo temporal para reemplazar el último archivo persistente para lograr la recuperación de datos.

ventaja:

  • Solo hay un archivo dump.rdb, que es conveniente para la persistencia.

  • La tolerancia a desastres es buena, un archivo se puede guardar en un disco seguro.

  • Para maximizar el rendimiento, bifurque el proceso secundario para completar la operación de escritura y permita que el proceso principal continúe procesando comandos, de modo que se maximice IO. Utilice un subproceso separado para la persistencia y el proceso principal no realizará ninguna operación de IO, lo que garantiza el alto rendimiento de Redis.

  • Cuando el conjunto de datos es grande, la eficiencia de inicio es mayor que la de AOF.

Desventajas: baja seguridad de los datos. RDB persiste a intervalos. Si Redis falla durante la persistencia, se producirá la pérdida de datos.Por lo tanto, este método es más adecuado cuando los requisitos de datos no son estrictos.

Método de persistencia AOF (archivo de solo agregar): significa que todos los registros de la línea de comando se almacenan de manera completamente persistente y se almacenan como archivos aof en el formato del protocolo de solicitud de comando de Redis.

ventaja:

  • Para la seguridad de los datos, la persistencia de AOF se puede configurar con el atributo appendfsync. Si siempre existe, cada operación de comando se registrará en el archivo AOF.

  • Al escribir archivos en modo agregar, incluso si el servidor falla en el medio, el problema de coherencia de los datos se puede resolver mediante la herramienta redis-check-aof.

  • El modo de reescritura del mecanismo AOF. Antes de reescribir el archivo AOF (los comandos se fusionarán y reescribirán cuando el archivo sea demasiado grande), puede eliminar algunos de los comandos (como flusall que se operó accidentalmente).

defecto:

  • Los archivos AOF son más grandes que los archivos RDB y su restauración es más lenta.

  • Cuando el conjunto de datos es grande, la eficiencia de inicio es menor que la de RDB.

9. Problemas y soluciones de rendimiento comunes de Redis

  • Es mejor que Master no escriba instantáneas de memoria. Si Master escribe instantáneas de memoria, el comando guardar programa la función rdbSave, que bloqueará el trabajo del hilo principal. Cuando la instantánea es relativamente grande, el impacto en el rendimiento será muy grande. el servicio se suspenderá de forma intermitente.

  • Si los datos son importantes, un esclavo habilita los datos de respaldo AOF y la política está configurada para sincronizar un dato por segundo.

  • Para la velocidad de replicación maestro-esclavo y la estabilidad de la conexión, es mejor que el Maestro y el Esclavo estén en la misma LAN.

  • Intente evitar agregar esclavos a una base de datos maestra estresada.

  • No utilice una estructura de gráfico para la replicación maestro-esclavo. Es más estable utilizar una estructura de lista vinculada unidireccional, es decir: Maestro.