Resumen de la última versión de las preguntas frecuentes de entrevistas de Redis en 2020

Muchos amigos solo leen las preguntas de la entrevista antes de la entrevista, lo cual es normal. Debido a que se necesita tiempo para recopilar las preguntas de la entrevista y la práctica, recopilé algunas preguntas de entrevistas populares de muchos entrevistadores. ¡Espero que te ayude en tu trabajo y entrevista futuros!

Hay demasiadas preguntas de la entrevista y el espacio es limitado, por lo que aquí solo se muestran algunas de las preguntas más frecuentes de la entrevista de Redis. Los amigos que necesitan la versión completa y materiales de entrevista más relevantes pueden hacer clic en el enlace a continuación para obtenerlos gratis.
Enlace: ¡ Haga clic aquí! ! ! Contraseña: CSDN

Inserte la descripción de la imagen aquí

1. ¿Qué es Redis?

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

Redis y otros productos de almacenamiento en caché de valores clave tienen las siguientes tres características:

Redis admite la persistencia de datos. Los datos de la memoria se pueden guardar en el disco y se pueden volver a cargar para usarlos al reiniciar.

Redis no solo admite datos de tipo clave-valor simple, sino que también proporciona almacenamiento para listas, conjuntos, zset, hash y otras estructuras de datos.

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

Ventaja de Redis

Rendimiento muy alto: Redis puede leer 110.000 veces / s y escribir 81.000 veces / s.

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

Atómico: todas las operaciones de Redis son atómicas, lo que significa que se ejecutan correctamente o no se ejecutan en absoluto. Una sola operación es atómica. Varias operaciones también admiten transacciones, es decir, atomicidad, empaquetadas con instrucciones MULTI y EXEC.

Funciones enriquecidas: Redis también admite publicación / suscripción, notificación, 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 en ellas, que es un camino evolutivo diferente 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 abstracción adicional.

Redis se ejecuta en la memoria, pero se puede conservar en el disco, por lo que es necesario pesar la memoria al leer y escribir diferentes conjuntos de datos a alta velocidad, porque la cantidad de datos no puede ser mayor que la memoria del hardware. Otra ventaja de la base de datos en memoria es que, en comparación con la misma estructura compleja de datos en el disco, es muy simple de operar en la memoria, por lo que Redis puede hacer muchas cosas internamente complejas. Al mismo tiempo, en términos de formato de disco, se generan de forma compacta porque no requieren acceso aleatorio.

En segundo lugar, ¿el tipo de datos de Redis?

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

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

Si dice que ha jugado al Módulo de Redis, como BloomFilter, RedisSearch, Redis-ML, los ojos del entrevistador comenzarán a brillar.

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

1. Velocidad rápida, debido a que los datos se almacenan en la memoria, similar a HashMap, la ventaja de HashMap es que la complejidad del tiempo de búsqueda y operación es O1)

2. Admite tipos de datos enriquecidos, cadenas de soporte, listas, conjuntos, Zset, hash, etc.

3. Transacciones de soporte, las operaciones son todas atómicas. La llamada atomicidad significa que todos los cambios de datos se ejecutan o no se ejecutan en absoluto

4. Funciones enriquecidas: se puede usar para almacenar en caché, mensajes, establecer el tiempo de vencimiento de acuerdo con la clave, se eliminará automáticamente después del vencimiento

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

1. Todos los valores de Memcached son cadenas simples, redis como reemplazo, admite tipos de datos más ricos

2. Redis es más rápido que Memcached 3. Redis puede conservar sus datos

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

1. Método de almacenamiento Memecache almacena todos los datos en la memoria y se colgará después de un corte de energía. Los datos no pueden exceder el tamaño de la memoria. Parte de Redis se almacena en el disco duro, lo que puede garantizar la durabilidad de los datos.

2. Tipo de soporte de datos Memcache admite tipos de datos relativamente simples. Redis tiene tipos de datos complejos.

3. El uso del modelo subyacente es diferente entre los métodos de implementación subyacentes y el protocolo de aplicación para la comunicación con el cliente. Redis construyó directamente el mecanismo de VM en sí mismo, debido a que el sistema general llama a las funciones del sistema, perderá una cierta cantidad de tiempo para moverse y solicitar.
Inserte la descripción de la imagen aquí

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

Respuesta: Redis es de un solo proceso y de un solo subproceso. Redis utiliza la 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 almacenamiento de un valor de tipo cadena?

Respuesta: 512M

8. ¿Cuál es el mecanismo de persistencia de Redis? ¿Sus ventajas y desventajas?

Redis proporciona dos mecanismos de persistencia, RDB y AOF:

1. RDBRedis DataBase) Modo de persistencia: se refiere al modo semipersistente que utiliza una instantánea del conjunto de datos) para registrar todos los pares clave-valor de la base de datos de redis y escribir los datos en un archivo temporal en un momento determinado. Después del final de la persistencia, utilice Este archivo temporal reemplaza el último archivo persistente para lograr la recuperación de datos.

ventaja:

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

2. Buena tolerancia a desastres, un archivo se puede guardar en un disco seguro.

3. Para maximizar el rendimiento, bifurque el proceso hijo para completar la operación de escritura y deje que el proceso principal continúe procesando comandos, de modo que IO se maximice. Utilice un subproceso separado para la persistencia, el proceso principal no realizará ninguna operación de E / S, para garantizar el alto rendimiento de redis) 4. En comparación con el gran conjunto de datos, la eficiencia de inicio es mayor que AOF.

Desventajas:

1. Baja seguridad de los datos. RDB se conserva a intervalos. Si la redis falla entre la persistencia, se producirán pérdidas de datos. Por tanto, este método es más adecuado cuando los requisitos de datos no son rigurosos)

2. Archivo AOFAppend-only) Modo de persistencia: Significa que todos los registros de la línea de comando se almacenan de manera completamente persistente en el formato del protocolo de solicitud de comando redis) y se guardan como un archivo aof.

ventaja:

1. La seguridad de los datos, la persistencia de aof se puede configurar con el atributo appendfsync, siempre existe, cada operación de comando se registra en el archivo aof una vez.

2. Escriba archivos en modo adjunto, incluso si el servidor está inactivo en el medio, puede usar la herramienta redis-check-aof para resolver el problema de consistencia de datos.

3. El modo de reescritura del mecanismo AOF. Antes de reescribir el archivo AOF (cuando el archivo es demasiado grande, el comando se fusionará y reescribirá), algunos de los comandos se pueden eliminar (como el flushall operado incorrectamente))

Desventajas:

1. El archivo AOF es más grande que el archivo RDB y la velocidad de recuperación es lenta.

2. Cuando el conjunto de datos es grande, la eficiencia de inicio es menor que la de rdb.

Nueve, problemas y soluciones de rendimiento comunes de Redis:

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

2. Si los datos son más importantes, un esclavo determinado permite que AOF realice una copia de seguridad de los datos y la política se configura para sincronizar una vez por segundo.

3. Para la velocidad de la replicación maestro-esclavo y la estabilidad de la conexión, el maestro y el esclavo deben estar preferiblemente en la misma LAN

4. Intente evitar agregar esclavos a la biblioteca maestra estresada

5. No utilice una estructura gráfica para la replicación maestro-esclavo. Es más estable usar una estructura de lista enlazada individualmente, a saber: Maestro <- Esclavo1

<- Esclavo2 <- Esclavo3 ... Esta estructura es conveniente para resolver el problema del punto único de falla y realizar el reemplazo de Esclavo por Maestro. Si el maestro cuelga, puede iniciar Slave1 como maestro inmediatamente y los demás permanecen sin cambios.
Inserte la descripción de la imagen aquí

10. ¿Cómo eliminar las claves caducadas de redis?

1. Tiempo de eliminación: mientras configura el tiempo de expiración de la clave, cree un temporizador. Deje que el temporizador ejecute la operación de eliminación de la clave inmediatamente cuando llegue la hora de expiración de la clave.

2. Eliminación diferida: Deje que la clave caduque independientemente, pero cada vez que obtenga una clave del espacio de claves, verifique si la clave obtenida caduca. Si caduca, elimine la clave, si no caduca, devuelva la clave.

3. Eliminación periódica: el programa comprobará la base de datos a intervalos regulares y eliminará las claves caducadas. En cuanto a cuántas claves caducadas eliminar y cuántas bases de datos verificar, depende del algoritmo.

11. Estrategia de reciclaje de Redis (estrategia de eliminación)

Volatile-lru: seleccione los datos utilizados menos recientemente del conjunto de datos (server.db [i] .expires) que ha establecido el tiempo de vencimiento

volatile-ttl: seleccione los datos que caducarán del conjunto de datos (server.db [i] .expires) que ha establecido el tiempo de caducidad

Volátil-aleatorio: seleccione arbitrariamente los datos que se eliminarán del conjunto de datos que ha establecido el tiempo de vencimiento (server.db [i] .expires)

allkeys-lru: seleccione los datos utilizados menos recientemente del conjunto de datos (server.db [i] .dict) para eliminar

allkeys-random: selecciona arbitrariamente datos del conjunto de datos (server.db [i] .dict) para eliminar

no-enviction (desalojo): prohíbe el desalojo de datos

Preste atención a los seis mecanismos aquí. Las teclas volátiles y todas especifican si eliminar datos de un conjunto de datos con un tiempo de vencimiento establecido o eliminar datos de todos los conjuntos de datos. Los siguientes lru, ttl y random son tres estrategias de eliminación diferentes, más una Una estrategia de no acatamiento de nunca reciclar.

Utilice las reglas de la política:

1. Si los datos presentan una distribución de ley de potencia, es decir, se accede a parte de los datos con frecuencia y a parte de los datos se accede con menor frecuencia, utilice allkeys-lru

2. Si los datos se distribuyen por igual, es decir, todas las frecuencias de acceso a los datos son iguales, utilice allkeys-random

12. ¿Por qué edis necesita guardar todos los datos en la memoria?

Respuesta: Para lograr la velocidad de lectura y escritura más rápida, Redis lee los datos en la memoria y escribe los datos en el disco de forma asincrónica. Entonces, redis tiene las características de rapidez y persistencia de datos. Si no almacena los datos en la memoria, la velocidad de E / S del disco afectará seriamente el rendimiento de redis. Hoy en día, cuando la memoria se vuelve más barata, los redis serán cada vez más populares. Si se establece el uso máximo de memoria, no se pueden insertar nuevos valores después de que el número de registros de datos existentes alcance el límite de memoria.

13. ¿Comprende el mecanismo de sincronización de Redis?

Respuesta: Redis puede utilizar la sincronización maestro-esclavo y la sincronización esclavo-esclavo. Durante la primera sincronización, el nodo maestro realiza un bgsave y registra las operaciones de modificación subsiguientes en el búfer de memoria al mismo tiempo. Una vez completado, el archivo RDB se sincroniza completamente con el nodo de replicación. Una vez que el nodo de replicación acepta la finalización, la imagen RDB se carga en la memoria. Una vez que se completa la carga, se notifica al nodo maestro que sincronice el registro de operación modificado durante el período con el nodo de replicación para su reproducción, y el proceso de sincronización se completa.

14. ¿Cuáles son los beneficios de Pipeline? ¿Por qué utilizar Pipeline?

Respuesta: El tiempo de múltiples viajes de ida y vuelta de IO se puede reducir a uno, siempre que no haya una correlación causal entre las instrucciones ejecutadas por la tubería. Cuando se usa redis-benchmark para pruebas de estrés, se puede encontrar que un factor importante que afecta el QPS pico de redis es el número de instrucciones de lote de canalización.

15. ¿Alguna vez ha utilizado el clúster de Redis? ¿Cuál es el principio del clúster?

Redis Sentinal 着眼于高可用, 在 master 宕机时会自动将 slave 提升为master, 继续提供服务。
Redis Cluster 着眼于扩展性, 在单个 redis 内存不足时, 使用 Cluster 进行分片存储。

16. ¿En qué circunstancias la solución de clúster de Redis hará que todo el clúster no esté disponible?

Respuesta: Un clúster con tres nodos A, B y C. Sin un modelo de replicación, si el nodo B falla, todo el clúster pensará que carece de ranuras en el rango de 5501-11000 y no está disponible.

17. ¿Cuáles son los clientes Java compatibles con Redis? ¿Cuál es la recomendación oficial?

Respuesta: Redisson, Jedis, lechuga, etc. Se recomienda oficialmente Redisson.

18. ¿Cuáles son las ventajas y desventajas de Jedis y Redisson?

Respuesta: Jedis es un cliente de la implementación de Java de Redis. Su API proporciona un soporte más completo para los comandos de Redis; Redisson implementa una estructura de datos de Java distribuida y extensible. En comparación con Jedis, tiene funciones más simples y no admite cadenas. Operation, no admite funciones de Redis como clasificación, transacciones, canalizaciones y particiones. El propósito de Redisson es promover la separación de preocupaciones de los usuarios a Redis, para que los usuarios puedan enfocarse más en procesar la lógica empresarial.
Inserte la descripción de la imagen aquí

19. ¿Cómo establecer la contraseña y verificar la contraseña en Redis?

Establecer contraseña: config establecer requirepass 123456 Contraseña de autorización: auth 123456

Veinte, ¿hablamos del concepto de tragamonedas hash de Redis?

Respuesta: El clúster de Redis no usa hash consistente, pero introduce el concepto de ranura de hash. El clúster de Redis tiene 16384 ranuras de hash. Después de la verificación CRC16, cada tecla modula 16384 para determinar qué ranura colocar. Cada nodo es responsable de parte de la ranura hash.

21. ¿Cuál es el modelo de replicación maestro-esclavo del clúster de Redis?

Respuesta: Para que el clúster esté disponible incluso cuando algunos nodos fallan o la mayoría de los nodos no se pueden comunicar, el clúster utiliza un modelo de replicación maestro-esclavo y cada nodo tendrá N-1 réplicas.

22. ¿Habrá pérdida de operaciones de escritura en el clúster de Redis? ¿por qué?

Respuesta: Redis no garantiza una sólida coherencia de los datos, lo que significa que, en la práctica, el clúster puede perder operaciones de escritura en determinadas condiciones.

23. ¿Cómo se replican los clústeres de Redis?

Respuesta: replicación asincrónica

24. ¿Cuál es la cantidad máxima de nodos en un clúster de Redis?

Respuesta: 16,384.

25. ¿Cómo elegir la base de datos para el clúster de Redis?

Respuesta: El clúster de Redis actualmente no puede seleccionar la base de datos, el valor predeterminado es 0 base de datos.

26. ¿Cómo probar la conectividad de Redis?

Respuesta: Utilice el comando ping.

27. ¿Cómo entender la transacción de Redis?

Respuesta:
1. La transacción es una operación aislada separada: todos los comandos de la transacción se serializarán y ejecutarán en orden. Durante la ejecución de la transacción, no será interrumpida por solicitudes de comando enviadas por otros clientes.
2. La transacción es una operación atómica: los comandos de la transacción se ejecutan todos o no se ejecuta ninguno.

28. ¿Cuáles son los comandos relacionados con las transacciones de Redis?

答 : MULTI 、 EJECUTAR 、 DESCARTAR 、 VER

Al final

Para ayudar a todos a entrevistar y estudiar mejor, aquí hay un conjunto completo de tutoriales en video para arquitectos y materiales sistemáticos en java. De Javase-ssm-springcloud, que incluye puntos de conocimiento básicos de Java, temas de entrevistas y 20 años de lo último en Internet Hay preguntas reales, libros electrónicos, etc., que son muy útiles para amigos y estudiantes universitarios que desean aprender Java o quieren cambiar de carrera. Pueden compartirlos con todos. ¡Los amigos que lo necesiten pueden hacer clic en el enlace de abajo para obtenerlos gratis!
Enlace: ¡ Haga clic aquí! ! ! Contraseña: CSDN

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/XingXing_Java/article/details/108456574
Recomendado
Clasificación