Para discutir estas preguntas comunes de la entrevista Redis

Redis debe ser considerado en la entrevista le pedirá a un punto de conocimiento, pero se encontró que los zapatos de muchos niños no están familiarizados con esto, hacer algo de esto en algún tipo de problemas comunes, hay algo mal me corrija el mensaje de bienvenida!

1.Redis Tipos de datos?

String (String)

formato: set key value

El tipo de cadena es seguro binario. Redis significado de cadena puede contener ningún dato. Tal como imagen jpg o objeto serializado.

Redis es el tipo más básico de tipo de datos de cadena puede almacenar una clave máxima de 512 MB.

Hash (hash)

formato: hmset name key1 value1 key2 value2

Redis hash es una clave (clave => valor) pares.

campo de hash Redis es un tipo de cadena y el valor de la tabla de asignación, el hash es particularmente adecuado para el almacenamiento de objetos.

Lista (lista)

Lista Redis es una simple lista de cadenas, para la ordenación por inserción. Se puede añadir un elemento a la cabeza de la lista (a la izquierda) o de las colas (a la derecha)

formato: lpush name value

Añadir un elemento clave de cadena correspondiente a la cabeza de la lista

formato: rpush name value

Añadir un elemento clave de cadena correspondiente a la cola de la lista

formato: lrem name index

tecla para borrar la lista correspondiente al contador y el valor del mismo elemento

formato: llen name

Devuelve la clave correspondiente a la longitud de la lista

Conjunto (recopilación)

formato: sadd name value

Redis es una cadena Ajuste el tipo de colección desordenada.

Colección se logra a través de una tabla hash, por lo que añadir, borrar, buscar la complejidad es O (1).

zConfigurar (conjunto ordenado: una colección ordenada)

formato: zadd name score value

Redis zConfigurar y se establece como una colección de elementos de tipo cuerda, y no permitir que los miembros duplicados.

La diferencia es que una puntuación doble estará asociado a cada tipo de elemento. Es a Redis de pequeño a grande orden de colección de calificación aprobatoria miembro.

miembro de zConfigurar es único, pero la puntuación (score) se puede repetir.

2. ¿Cuál es la persistencia Redis? Redis, que cuenta con varias manera persistente? ¿Qué ventajas y desventajas?

La persistencia es la memoria de los datos escritos en el disco para evitar la pérdida de datos memoria de servicio el tiempo de inactividad.

Redis persistencia proporciona dos maneras: RDB (por defecto) y AOF

RDB:

rdb es una abreviatura Redis DataBase

Kernel función rdbSave (RDB archivos generado) y rdbLoad (archivos cargan desde la memoria) dos funciones

AOF:

AOF es sólo para adjuntar archivos abreviados

Cada vez que se llama servidor de ejecución (tiempo) tarea o función flushAppendOnlyFile función, esta función realiza las siguientes dos trabajan

Guardar AOF de escritura:

  • ESCRITURA: El estado de la caché escrito a aof_buf archivo AOF
  • GUARDAR: Dependiendo de las condiciones, fsync llamada o función fdatasync, guardar el archivo en el disco AOF.

Estructura de almacenamiento:

El contenido se almacena en Redis orden de formato de protocolo de comunicación de texto (RESP).

compare:

  • AOF frecuencia de actualización de archivos más alta que RDB, AOF utilizado preferentemente para restaurar los datos.
  • RDB es mayor que AOF más seguro
  • RDB mejor rendimiento que AOF
  • Si ambos están cargados de AOF prioridad

Usted ha mencionado justo por encima de protocolo Redis (RESP), explicar bajo qué es RESP? ¿Cuáles son las características? (Se puede ver una gran cantidad de entrevistas son en realidad el arma de cadena, de hecho, el entrevistador está esperando a que las responda este punto, si su respuesta en su evaluación de la misma se ha añadido un punto)

RESP es un protocolo de comunicación utilizado antes Redis cliente y el servidor;

RESP características: sencilla, rápida resolución, una buena legibilidad

Para cuerdas simples del primer byte de la respuesta es "+"回复
para errores del primer byte de la respuesta es "-"错误
para los enteros del primer byte de la respuesta es ":"整数
para granel Cuerdas del primer byte de la respuesta es "$"字符串
para las matrices del primer byte de la respuesta es "*"数组

pidió mayor persistencia en las frecuencias de la entrevista, aprender sobre el enfoque, el espacio es limitado, los puntos específicos con el siguiente artículo:

10 minutos comprensión exacta del mecanismo de persistencia Redis: RDB y AOF

¿Qué patrones de arquitectura 3.Redis allí? Hablar de sus características

Autónomo

características:

sencillo

problema:

  • La capacidad de memoria es limitada
  • capacidad de procesamiento limitada
  • Incapaz de disponibilidad.

la replicación maestro-esclavo

Redis replicación (replicación) función permite al usuario crear cualquier número de copias del servidor basado en un servidor Redis, donde el servidor es un maestro se copia (Maestro), y copiando réplicas fue creado a partir del servidor desde el servidor ( esclavo).

Siempre y cuando la conexión principal entre el servidor de red desde la normalidad, tanto desde el servidor maestro tendrá los mismos datos, el servidor principal tendrá que pasar con ellos a las actualizaciones de datos sincronizar desde el servidor, que ha sido la principal garantía de los mismos datos desde el servidor.

características:

  • maestro / esclavo
  • Mismo maestro / esclavo de datos
  • La reducción de la presión en el maestro transmite la lectura de una biblioteca

problema:

  • No podemos garantizar la disponibilidad
  • No resuelve el maestro escribió presión

centinela

Redis centinela un sistema distribuido se controla desde redis servidor maestro, y automáticamente la conmutación por error del servidor fuera de línea primaria. Tres características:

  • Monitorización (Monitoring): Sentinel tendrá que seguir comprobando su servidor si el servidor principal y funcione correctamente.
  • Recuerde a (Notificación): Cuando la monitorización de un problema en el servidor Redis, Sentinel puede enviar notificaciones al administrador o otras aplicaciones a través de la API.
  • conmutación automática por error (failover automático): cuando un servidor primario no está funcionando adecuadamente, Sentinel se iniciará automáticamente una operación de conmutación por error.

características:

  • Garantizar una alta disponibilidad
  • Monitoreo de cada nodo
  • failover automático

desventajas:

  • el modo maestro-esclavo, la conmutación tiene tiempo que perder los datos
  • No resuelve el maestro escribió presión

Cluster (tipo de proxy)

Twemproxy es una fuente abierta Twitter Memcache y Redis un servidor proxy rápida / ligera; Twemproxy protocolo ASCII es una forma rápida de una sola rosca programa proxy, apoyado Memcached y Redis acuerdo.

características:

  • Una variedad de algoritmos hash MD5:, CRC16, CRC32, CRC32a, Hsieh, soplo, Jenkins
  • Soporte nodo fallido elimina automáticamente
  • Sharding rebanada lógica de negocio transparente trasera, leer y operaciones de escritura y una sola cara de la misma operación Redis

desventajas:

  • Se ha añadido un nuevo proxy, que necesita para mantener su alta disponibilidad.
  • necesidad de implementar la lógica de conmutación por error, que en sí misma no puede soportar la falta de transferencia de mala escalabilidad automática, capacidad de escalado requiere intervención manual

Cluster (tipo directo):

A partir de entonces REDIS 3,0 Apoyado clustering redis-cluster, estructura central Redis-libre de clústeres, cada uno del nodo de almacenamiento de datos y todo el estado de la agrupación, cada nodo y todos los otros nodos están conectados.

características:

  • arquitectura Ninguno centro (que afectan el nodo de cuello de botella no existe), menos una capa proxy.
  • Slot de acuerdo con los datos almacenados una pluralidad de nodos distribuidos, el intercambio de datos entre nodos, la distribución de datos se puede ajustar dinámicamente.
  • Escalabilidad, linealmente ampliable a 1000 nodos, los nodos se puede añadir o eliminar dinámicamente.
  • Alta disponibilidad, algún nodo no está disponible, el grupo sigue estando disponible. Hacer copias de seguridad de los datos mediante el aumento de esclavos
    - no alcanzar entre failover automático, los nodos de intercambio de información de estado a través del protocolo de chismes, completa esclavo para mejorar el papel de maestro por el mecanismo de votación.

desventajas:

  • el aislamiento de los recursos es pobre, la situación es propensa a influir en los demás.
  • replicación de datos asincrónica, no garantiza una fuerte consistencia de los datos

Redis análisis acumulación arquitectura de alta disponibilidad, se puede referir a: alta disponibilidad análisis de la arquitectura y configurar su servicio Redis

4. Usado Redis distribuidos bloqueo de ella, es la forma de lograr?

scramble Setnx adquirir un bloqueo, luego agarró y, a continuación, añadir una cerradura de caducar caducidad evitar el bloqueo olvídese liberado.

Si se realiza antes de expirar después setnx proceso para reiniciar inesperadamente chocar o mantenerse, ¿qué ocurre?

Hay conjunto de instrucciones muy compleja de parámetros, esto debería ser capaz de setnx y expirará al mismo tiempo una instrucción de síntesis para su uso!

5. utilizaron Redis qué hacer cola asíncrona, ¿cómo se utiliza? ¿Cuáles son las desventajas?

Estructura se utiliza generalmente como una lista de la cola, la producción de mensajes rpush, mensaje de consumo lpop. Lpop cuando ningún mensaje a un buen sueño lo intentará de nuevo.

desventajas:

  • En el caso de que el consumidor la línea de montaje, la producción será la pérdida de mensajes, colas de mensajes tienen que utilizar profesional como RabbitMQ y así sucesivamente.

Muchas veces un consumidor no puede producirlo?

sub modo tema abonado Uso pub /, puede alcanzar el 1: cola de mensajes N.

6. ¿Cuál es el penetrante caché? ¿Cómo evitar? ¿Cuál es la caché avalancha? evitar ru?

la penetración de la caché

sistema de almacenamiento en caché general, se está de acuerdo con la clave de la caché de consultas, si no existe el valor correspondiente, deben ir a buscar los sistemas de back-end (como DB). Algunas de las principales solicitud de consulta deliberadamente malicioso no está presente, una gran cantidad de la solicitud, hará que una gran cantidad de presión sobre los sistemas de back-end. Esto se llama el almacenamiento en caché de penetración.

¿Cómo evitar?

  • El resultado de la consulta es la situación de vacío también caché, caché de tiempo más corto, o los datos clave correspondientes caché de la limpieza después de la inserción.
  • La clave no existe para un determinado filtro. Podemos poner toda la llave sea posible en un gran mapa de bits mediante la consulta de filtro de mapa de bits.

caché de avalancha

Cuando el reinicio del servidor caché o un gran número de caché concentrados en un período de tiempo de fallar, de modo que cuando los sistemas de fracaso, de back-end traerán mucha presión. Hacer que el sistema se bloquee.

¿Cómo evitar?

  • Después de un fallo de caché, mediante el bloqueo para controlar el número de hilos o base de datos de cola de leer caché de escritura. Por ejemplo, una tecla para permitir que sólo un hilo para consultar la caché de datos y la escritura, otros subprocesos esperan.
  • Hacer caché secundaria, caché del A1 original, copia A2 se almacena en caché, cuando A1 falla, el acceso a la A2, A1 tiempo de caducidad de la caché se fija a corto plazo, A2 se fija a largo plazo
  • clave diferente, al conjunto diferente tiempo de vencimiento del punto en el tiempo de un fallo de caché lo más uniforme posible.

Es canal bastante común y, a continuación en detalle a continuación con referencia a, cierto maestro: la caché de avalancha caché desglose, la penetración de la memoria caché y varios común el modo de caché Redis

7.Redis comandos utilizados comúnmente

Comando de gestión

# Dbsize llave vuelve el número de la base de datos actual. 
# Información ReDiS devuelve el servidor al estado actual, y alguna información estadística. 
# Monitor de supervisión y Redis en tiempo real regresan todas las solicitudes de información recibidas por el servidor. 
# Datos de apagado Sincronizar guardan en el disco y apague el servicio Redis. 
Config # GET el parámetro de obtener una información de parámetros de configuración redis. (Parámetros individuales pueden no conseguir) 
# config el SET el valor del parámetro REDIS establece una información de parámetros de configuración. (Los parámetros individuales pueden no llegar) 
# config resetstat restablecer el comando estadísticas información. (Restablecer incluyen: golpes, KEYSPACE 
# Número de espacio de claves de errores, el número de procesamiento de pedidos, recibir conexiones, expiró una clave pocas) 
# depuración de objetos clave para obtener información de depuración de una llave. 
# Fabricación de un fallo en el servidor de depuración violación de segmento. 
# Flushdb borrar todo actual base de datos clave, este método no fallará. Sea cuidadoso 
# flushall eliminar toda la base de datos de toda la llave, este método no falla. Sea cuidadoso

 

Comando herramienta

redescubrir # Servidor: servidor Redis demonio lanzador 
#redis - CLI: Redis herramienta de línea de comandos. Por supuesto, también se puede utilizar un texto de acuerdo con su protocolo Telnet funciona 
#redis - Índice de referencia: el rendimiento Redis herramientas de prueba, prueba de Redis en su sistema y de configuración de lectura y el rendimiento de escritura de su 
$ Redis -benchmark -n 100000 -C 50 
# simulación por ambos 50 clientes que envían 100000 a Establece / GET consulta 
#redis -check- AOF: comprobar el registro de actualización 
#redis -check la dump-: Asegúrate de base de datos local

 

8.Redis realización individual, el modo maestro de la disposición de comparación, y la agrupación de las ventajas y desventajas de Sentinel

REDIS realización individual, el modo maestro de la disposición de comparación, y la agrupación de las ventajas y desventajas de Sentinel

9. ¿Por qué Redis subproceso único capaz de soportar alta concurrencia?

¿Por Redis subproceso único capaz de soportar alta concurrencia?

10.Redis problemas comunes de rendimiento y soluciones:

1) instantánea de memoria .master escritura, la función de ahorro de comandos de programación rdbSave, puede bloquear el hilo principal de la obra, cuando la instantánea es relativamente grande impacto en el rendimiento es muy grande, será suspendido de forma intermitente, por lo que Master es mejor no escribir una instantánea de memoria.

2) .master AOF persistente, si no reescribe documentos AOF, el impacto de esta manera persistente en el rendimiento es mínimo, pero los archivos de AOF crecer, archivo AOF demasiado efecto sobre la velocidad de recuperación de reinicio maestro. Maestro mejor no hace ningún trabajo persistente, incluyendo instantáneas de memoria y archivos de registro de AOF, especialmente no permiten instantáneas de memoria son persistentes, si los datos son más críticos, abra una copia de seguridad de datos, la estrategia de sincronización Slave AOF una vez por segundo.

3) .master llamar BGREWRITEAOF AOF reescribir el archivo, cuando AOF reescritura será responsable de una gran cantidad de recursos de CPU y memoria, lo que resulta en la carga de trabajo es demasiado alta, una breve suspensión del fenómeno de servicio.

4) maestro de replicación .Redis de problemas de rendimiento, en orden desde la velocidad de copia maestra y la estabilidad, el esclavo y el maestro se conecta preferiblemente a la misma LAN

análisis de rendimiento Redis temas relacionados, el espacio es limitado, enlace determinado artículo:

Análisis de rendimiento Redis (buen texto recomendado)

Cómo 11.Redis resolución concurrente problema de competencia?

Redis es modelo de proceso de un solo subproceso, utilizando el acceso simultáneo al modelo de colas se convertirá en el acceso de serie. Redis en sí no se bloquea concepto, Redis para múltiples conexiones de cliente competencia no existe, pero el tiempo de conexión cuando los clientes Jedis Redis para el acceso simultáneo se produce, error de conversión de datos, bloqueo, el cliente y el cierre de los problemas de conexión que es debido a la confusión causada por las conexiones del cliente. En este sentido hay dos soluciones:

  • Punto de vista del cliente, para cada cliente con el fin de garantizar una comunicación suave entre Redis con, por la agrupación de conexiones, mientras que el cliente lea y operaciones de escritura utilizando el bloqueo interno ReDiS sincronizado.
  • punto de vista del servidor, el uso de setnx lograr cerradura.

Nota: Para el primero, tenemos que lidiar con sus propios recursos de la aplicación de sincronización, los métodos que se pueden utilizar más populares, puede utilizar sincronizada también puede utilizar el bloqueo y la segunda es la necesidad de utilizar comandos Redis setnx, pero tenga en cuenta algunos problemas.

12. charla sobre estrategia de eliminación de la memoria Redis

punto directo aquí: estrategia de eliminación de la memoria Redis

13.Redis de escena más adecuado

Redis más adecuados para todos los datos en-momory escena, aunque Redis también proporcionan capacidades de duración, pero es en realidad más de una función de disco con respaldo, con persistencia en el sentido tradicional tiene una diferencia relativamente grande, entonces probablemente lo hará tiene preguntas, parece más como una versión mejorada de Redis Memcached, entonces cuándo usar Memcached, Redis cuándo usarlo?

Si simplemente comparar la diferencia entre Redis y Memcached, la mayoría se obtendrá el siguiente punto de vista:

  • Redis no sólo admite tipos simples k / v de datos, mientras que también proporciona una lista de almacenamiento, juego, zConfigurar, hachís y otras estructuras de datos.
  • Redis compatible con los datos de copia de seguridad, es decir, copia de seguridad de datos en modo maestro-esclavo.
  • Redis es compatible con la persistencia de datos, los datos en la memoria se pueden guardar en el disco, reiniciar cuando se puede cargar ser utilizado de nuevo.

caché de sesión (Session caché)

El escenario más común es usar caché de sesión Redis (caché de sesión). cache de sesiones Redis con que otros medios de almacenamiento (como Memcached) tiene la ventaja de: Redis proporcionar persistencia. Cuando no es estrictamente necesario para mantener una coherencia de caché, si la información de carrito de la compra del usuario pierde, la mayoría de las personas no estarán contentos, y ahora, lo harán?

Afortunadamente, con la mejora de Redis estos años, es fácil encontrar el documento correcto el uso de cache de sesiones Redis. Incluso plataforma de negocios muy conocido Magento también ofrece Redis plug-ins.

caché de página completa (FPC)

Además de la señal de sesión básico, Redis también proporciona una plataforma muy conveniente para FPC. Volver consistencia, incluso reinicio ejemplo Redis, debido a la persistencia de disco, los usuarios no verán una velocidad de carga de las páginas disminución, lo cual es una gran mejora, similar a PHP FPC local.

Magento de nuevo como ejemplo, Magento ofrece un plug-in para utilizar Redis como una página completa de back-end caché.

Además, el usuario de WordPress, Panteón tiene un plugin wp-grandes Redis, este plugin puede ayudarle con la mayor velocidad de carga de las páginas que ha visitado.

cola

Reids una gran ventaja en el motor de almacenamiento de memoria de campo es proporcionar una lista y operaciones de conjuntos, lo que hace Redis puede servir como una plataforma bueno utilizar la cola de mensajes. Redis utilizado como una cola de operaciones, similar a la lengua materna (por ejemplo, Python) de empuje en la lista de operaciones / pop.

Si usted hace una búsqueda rápida de "colas Redis" en Google, podrás encontrar un gran número de proyectos de código abierto, el objetivo de estos proyectos es utilizar Redis crear una tarea muy buenas herramientas de back-end para satisfacer las necesidades de los diferentes colas. Por ejemplo, apio tiene un fondo es utilizar Redis como corredor, se puede ir a ver desde aquí.

Filas / Contador

Redis a digital o en las operaciones de memoria se realizan muy bien. Colección (conjunto) y un conjunto ordenado (Ordenado Set) también nos permite el tiempo para realizar estas operaciones se vuelven muy sencilla, simplemente Redis proporcionan sólo estas dos estructuras de datos. Por lo tanto, tenemos que ordenar la colección para obtener el mejor clasificado 10 usuarios - lo que llamamos "user_scores".

Por supuesto, esto supone que se está haciendo cada vez mayor marcador de usuario en función de su tipo. Si desea devolver el usuario y la puntuación del usuario, lo que necesita para llevar a cabo:ZRANGE user_scores 0 10 WITHSCORES

Agora Games es un ejemplo bueno, implementada en Ruby, su clasificación es utilizar Redis para almacenar datos, se puede ver aquí.

Publish / Subscribe

Últimos (pero ciertamente no menos importante) es Redis publicación / suscripción funcionalidad. De publicación / suscripción escenario de uso es de hecho mucho. He visto personas utilizan conexiones de redes sociales, sino también para construir un sistema de chat basado publicación / suscripción activadores de guión, e incluso publicar Redis / suscripción funcionalidad!

Supongo que te gusta

Origin www.cnblogs.com/javazhiyin/p/12636143.html
Recomendado
Clasificación