Les pido, no han encontrado ningún problema en el proceso de Redis lo utilizan? Por ejemplo avalancha caché, caché de la penetración, la obstrucción. ¿Cuáles son las causas de estos problemas es? ¿Cómo debemos resolverlo? En este artículo hablaremos sobre esto.
zueco
Debido a la arquitectura Redis es un único subproceso, todas las lecturas y escrituras se realizan en un hilo principal, así que cuando un estrangulador sucede, sería fatal.
causas subyacentes
(1) de la API o estructuras de datos utilizados irracional
// 获取最近的10条慢查询
slowlog get 10
(2) CPU saturado
(3) relacionados con el bloqueo persistente: bloqueo tenedor, AOF placa de escobillas bloqueada, hugepage bloqueo operación de escritura
Las causas externas
(1) la competencia de la CPU
(2) intercambio de memoria
(3) problemas de red: Conexión rechazada, la latencia de red, tarjeta de red de interrupción suave
soluciones
(1) se añadió a las anomalías de monitor en el lado de la aplicación, y para apuntar problemas específicos en el nodo
(2) el seguimiento Redis
coherencia de caché
actualización de Políticas
datos Redis es a menudo ciclo de vida, necesidad de ser retirado o se actualiza después de un cierto tiempo, por lo que puede garantizar espacio de caché en un rango controlable. Hay tres tipos de política de actualización de la caché.
(1) LRU / LFU / FIFO algoritmo sacrificio
Cuando el uso de la caché supera un máximo predeterminado, se pondrá en marcha la política de eliminación de datos.
LRU:最近最久未使用
LFU:最近最少使用
FIFO:先进先出
(2) horas extraordinarias excluido
Cuando los datos en la memoria caché, el tiempo de caducidad se ha establecido, cuando el tiempo se elimina automáticamente. Utilice el comando expire lograr.
(3) tomar la iniciativa de actualización
Después de los datos "ABM" operación, retire inmediatamente los datos relevantes Redis
la penetración de la caché
1, el concepto de
la penetración de caché significa que los datos no existe una base de datos de consulta, para consultar la base de datos cada vez, y cada vez que la consulta está vacío, cada vez que no se almacena en caché. Si un gran número de peticiones que entran, podría abrumar a la base de datos.
2, las causas
(1) Código de auto-servicio o datos de problemas
(2) ataques maliciosos, causando un gran número de reptiles y otros éxitos vacías
3, soluciones
(1) memoria caché de objetos vacía
Cuando la base de datos no se ve afectado, sigue siendo objeto vacío en la capa de caché, después de volver a acceder a los datos se recuperan de la memoria caché, protegiendo así las fuentes de datos de back-end.
Los códigos son los siguientes:
String get(String key){
//从缓存中获取数据
String cacheValue=cache.get(key);
//缓存为空
if(StringUtils.isBlank(cacheValue)){
//从存储中获取
String storageValue=storage.get(key);
cache.set(key,storageValue);
//如果存储数据为空,需要设置一个过期时间(300秒)
if(storageValue==null){
cache.expire(key,60*5);
}
return storageValue;
}else{
//缓存非空
return cacheValue;
}
}
Esta solución se utiliza para la escena: golpe de datos no es muy alta y el cambio de frecuencia de datos en tiempo real de alta.
interceptación de filtro (2) Bloom
La descarga de llave de filtro Rubu largas existentes. Cuando una solicitud de consulta sobre pasar por este filtro, este filtro es que si los datos no existe, directamente descartados, sin aún más el acceso a las capas de caché y de la memoria.
Esta solución es aplicable escena: golpe de datos no es muy alta, los datos relativamente fijos, baja en tiempo real
pozo sin fondo
1, el concepto de
Con el fin de satisfacer las necesidades del negocio, la adición de un gran número de nodos del clúster Redis, pero el rendimiento no mejoró el peor.
2, las causas
En funcionamiento autónomo, si desea obtener más masiva de teclas, con una sola red puede operar en el clúster, los nodos más, la red más involucrados IO, el rendimiento puede ser el rendimiento sea menor.
3, la solución
(1) comandos de serie
(2) de serie del IO
(. 3) paralela a la IO
(. 4) para lograr HASH_TAG
caché de avalancha
1, el concepto de
Caché avalancha se refiere al uso de la misma fecha de vencimiento al configurar la memoria caché, la memoria caché al mismo tiempo conducir a un fallo en algún momento, el plomo a todas las consultas caer en la base de datos, lo que resulta en una memoria caché de avalancha.
2, la solución
(1) una clave diferente, para establecer diferentes tiempo de vencimiento del punto en el tiempo de un fallo de caché lo más uniforme posible.
(2) Si una base de datos de caché se distribuye despliegue, los datos calientes distribuidas de manera uniforme en la base de datos diferente caché.
(3) Ajuste de datos caliente nunca expira.
(4) hacer la cache secundaria.
(5) Después de un fallo de caché, mediante el bloqueo para controlar el número de hilos o cola de leer base de datos de 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.