entrada [Redis]

Redis general

 Redis es una fuente abierta, la estructura de datos basada en memoria de la memoria se puede utilizar como una base de datos, la memoria caché y middleware de mensajería

Redis funciones que se usan con mayor frecuencia

  • cache
  • Bloqueo distribuido
 En este artículo se describe el uso del medio ambiente
  • windows 10

  • Redis 3.0.504

Como instalar Redis no introducirse, si no quieren instalar el entorno de Redis, puede utilizar intento Redis tratan función Redis
CMD inicio Redis, directorio Reid abierta, ejecute el siguiente comando, aparece debajo de la imagen representa el inicio exitoso
redis.windows.conf Redis-servidor

 

 

Redis estructura de datos común

String (String)

uso

  • cadena de almacenamiento / digital
  • aplicación de memoria cache usual clave-valor
  • recuento convencional: el número de pedidos, número de producto
Comandos comunes uso
conjunto de valores clave Establecer el valor de la clave especificada
obtener la clave Obtiene el valor de la clave especificada
decr clave El valor de la clave especificada disminuye en uno, si el valor digital no está establecido, el error
clave incr El valor clave especificada se incrementa en uno, si el valor digital no está establecido, error
mget key1 [key2] Obtener la clave especificada, devolver múltiples valores

 

Hash (Hash)

uso

  • hash es particularmente adecuado para objetos almacenar (información de usuario, información del producto)
  • Puede modificar / leer un valor objetivo
Comandos comunes uso
HAjuste valor clave de campo Valor único conjunto de objetos
hget valor clave de campo El valor objetivo obtenido
hmset valor de clave campo1 [campo2 valor2] Objeto proporciona una pluralidad de valores de campo
hmget Obtener objetos varios valores, devuelve una lista
hgetall Obtiene los campos clave de valor y objetos

 

 

Lista (lista)

uso

  • lista doblemente enlazada de recorrido y el apoyo de búsqueda inversa
  • Puede agregar datos duplicados
  • Adecuado para el almacenamiento de la lista de mensajes, la lista de productos, lista de orden, etc.
Comandos comunes uso
lpush valor clave Para impulsar el valor de la lista de la izquierda
valor de la clave rpush Empuje el valor correcto a la lista
clave lpop El lado izquierdo de la lista emergente de los valores
clave RPOP El valor del lado derecho de la lista emergente
lrange extremo inicial clave El lado izquierdo de los elementos de la lista en el rango especificado, usado para paginación
llen key Obtiene la longitud de la lista

 

 

Colección (conjunto)

uso

  • Lo mismo ocurre con la lista, el equipo se vaya a repetir
Comandos comunes uso
sadd valor clave Adición de un elemento
valor de la clave SPop Devuelve un elemento aleatorio
smembers clave Devuelve una colección de todos los miembros
SUNION key1 clave2 Devolver todo el conjunto dado de unión

 

conjunto ordenado (Ordenado Set)

 uso

  • Elementos de la colección pueden ser ordenados por la puntuación
  • Se utiliza para los datos de clasificación
  • En las mismas circunstancias puntuación, la clave de ordenación Diccionario
Comandos comunes uso
Zadd SCORE1 clave miembro1 [score2 member2] Añadiendo al conjunto ordenado de uno o más miembros, o actualizar un miembro existente de la puntuación
zrange extremo inicial clave Devuelve el conjunto ordenado de datos de rango especificado
miembro clave zrem Elimina el miembro especificado
clave zcard Obtiene una colección de pertenencia

 

 

 

Redis supresión de política de datos expirado

Redis eliminación de datos expirado, hay dos mecanismos

1. regularidad de eliminación: por defecto es Redis cada 100 ms en una muestra aleatoria de eliminación de datos caducado

2. Eliminar inerte: si se debe acceder a los datos cuando los datos de la inspección tiene caducada

 

REDIS mecanismo de eliminación de memoria

Cuando la memoria de escritura de datos se enfrentan no es suficiente, Redis tiene varios mecanismos para decidir qué hacer a continuación

camino explicación
volátil-LRU Escoja los datos menos recientemente utilizado establecidos de tiempo de expiración conjuntos de datos (server.db [i] .expires) en
volátil-ttl selección de datos de expirar el tiempo de caducidad se ha establecido a partir del conjunto de datos (server.db [i] .expires) en
volátil-aleatoria Fuera datos de un conjunto seleccionado de conjunto de datos de caducidad (server.db [i] .expires) cualquier
AllKeys-LRU Cuando la memoria es insuficiente para acomodar los nuevos datos se escriben en el espacio de claves, se retira la llave del utilizado menos recientemente
AllKeys-aleatoria Fuera de datos del conjunto de datos seleccionados (server.db [i] .dict) cualquier
noeviction Prohibición eliminación, si fuera de error de memoria
volátil-LFU Elige la frecuencia más baja de los datos de uso de la fase de salida se ha fijado el tiempo de caducidad del conjunto de datos (Redis5.0 posterior)
allkeys-lfu 从数据集中挑选使用频率最低的数据淘汰(Redis5.0 以后才有)

在配置文件里面打开maxmemory-policy配置项,默认是:noeviction

通常情况配合maxmemory配置设置最大内存使用

 

Redis持久化机制

Redis支持两种持久化方式

快照(snapshotting)持久化(RDB)

  • Redis可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本
  • Redis默认采用的持久化方式
  • 配置多个save配置项指定触发创建副本条件,例:save 900 1 , 900秒内至少一个Key发生变化触发创建快照
  • 缺点:若没达到触发条件,数据容易丢失

AOF(append-only file)持久化

  • 开启AOF持久化后,根据选择的方式写入AOF文件中
  • 配置appendfsync 配置项,配置同步频率
  • 缺点:可能经常发生同步,影响Redis的速度 

AOF有3种方式

方式 说明
appendfsync always 每次有数据修改发生时都会写入AOF文件 ,严重降低Redis的速度
appendfsync everysec 每秒钟同步一次,显示地将多个写命令同步到硬盘
appendfsync no 让操作系统决定何时进行同步

为了兼顾数据和写入性能,用户可以考虑 appendfsync everysec 选项 ,让 Redis 每秒同步一次 AOF 文件,Redis 性能几乎没受到任何影响。

Redies默认AOF是关闭的,通过修改配置打开

 

 

Redis 4.0 对于持久化机制的优化

Redis 4.0 开始支持 RDB 和 AOF 的混合持久化(默认关闭,可以通过配置项 aof-use-rdb-preamble 开启)。

如果把混合持久化打开,AOF 重写的时候就直接把 RDB 的内容写到 AOF 文件开头。

这样做的好处是可以结合 RDB 和 AOF 的优点, 快速加载同时避免丢失过多的数据。

当然缺点也是有的,AOF 里面的 RDB 部分是压缩格式不再是 AOF 格式,可读性较差。

由于Windows的版本最新只有3.0,这个就没法验证

缓存问题及解决方案

缓存雪崩

同一时间大面积缓存失效,大量请求落到数据库上

解决

  • 缓存设置过期时间时加上一个随机值时间,使得每个key的过期时间分布开来,不会集中在同一时刻失效

缓存穿透

请求缓存不存在的数据,然请求穿透缓存到数据库,通常是黑客攻击

解决

  • 采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤
  • 访问key未在DB查询到值,也将空值写进缓存,但可以设置较短过期时间
  • 采用签名验证提交数据

缓存击穿

缓存过期的一刻,同时有大量的请求,由于缓存失效,导致请求都落到DB

解决

  • 单体使用互斥锁(mutex key)
  • 分布式使用setnx
  • 双重校验访问缓存数据(Double Check),就是线程安全的单例模式

Supongo que te gusta

Origin www.cnblogs.com/WilsonPan/p/12635605.html
Recomendado
Clasificación