# Resumen de Redis de conocimiento común (dos)

Resumen de conocimiento común de Redis (dos)

Reids de un solo hilo y de alto rendimiento.

Hilo único

  • Un solo subproceso significa que el módulo de solicitud de red usa un subproceso (por lo que no es necesario considerar la seguridad de la concurrencia), es decir, un subproceso maneja todas las solicitudes de red y otros módulos todavía usan varios subprocesos.

alto rendimiento

  • Los datos están en la memoria, y todas las operaciones son operaciones de nivel de memoria. Un solo subproceso evita el problema del consumo de recursos por la conmutación de múltiples subprocesos.

Clientes concurrentes de procesamiento de un solo subproceso de Redis

  • Multiplexación de E / S de Redis: Redis utiliza epoll para implementar la multiplexación de E / S, poniendo la información de conexión y los eventos en la cola y luego colocándolos en el despachador de eventos de archivo. El despachador de eventos distribuye los eventos al controlador de eventos.

Persistencia de Redis

RDB (Base de datos de Redis)

  • En diferentes momentos, se generan instantáneas de los datos almacenados en redis y se almacenan en discos y otros medios.

AOF (Adjuntar solo archivo)

  • AOF es un punto de vista diferente para lograr la persistencia, es decir, para registrar todas las instrucciones de escritura ejecutadas por redis. Cuando se reinicia redis la próxima vez, siempre que estas instrucciones de escritura se ejecuten nuevamente de adelante hacia atrás, los datos se pueden realizar. .vuelve a la normalidad.

  • RDB y AOF se pueden usar al mismo tiempo. En este caso, si se reinicia Redis, se preferirá AOF para la recuperación de datos, ya que los datos de recuperación de AOF tienen una alta integridad.


Estructura de datos común

Cuerda

Operaciones comunes de cadena: valor clave

Se usa con más frecuencia En redis, la clave es de tipo String y el valor es de tipo String.

set key value // 存入字符串键值对
get key 		// 获得key存储的value
del key			// 删除key存储的值
mset test1 one test2 two // 存储多个键值
mget test1 test2	// 查找多个key的值
setnx test zhangsan // 只有key 不存在时候插入
expire test 5	// 设置test键5秒过期
Suma y resta atómica
incr count	// 键count存的值+1
decr count  // 键count存的值-1
incrby a 7	// 给a存的值加上7
decrbt a 7 	// 给a存的值-7
Escenarios de aplicación de cadenas
  • Caché de valor único
set test zhangsan
get test
  • Caché de objetos
set people:1:id 10001
  • Cerradura distribuida
setnx count:1000 true // 1代表获取锁成功
setnx count:1000 true // 0代表获取锁失败

del count:1000	// 释放锁 返回1
set product:1000 true ex 10 nx //防止死锁
  • encimera
incr article:count:{
    
    test}	// test这篇文章的阅读量+1
get article:count:{
    
    test}
  • Compartir sesión

  • Número de serie global del sistema distribuido


Picadillo

Operaciones hash comunes: valor del campo clave

Inserte la descripción de la imagen aquí

hset one test2 "test2"  //存储一个哈希表key的键值
hget one test2			// 获得哈希表中某个键的值
hmset one one "2" two "3" // 存储多个key value 在hash one 中

HSETNX key field value  //存储一个不存在的哈希表key的键值
HMGET key field [field ...] //批量获取哈希表key中多个field键值
HDEL key field [field ...]  //删除哈希表key中的field键值
HLEN key //返回哈希表key中field的数量
HGETALL key //返回哈希表key中所有的键值
HINCRBY key field increment //为哈希表key中field键的值加上增量
Escenarios de aplicación hash
  • Almacenamiento de objetos
hmset user 1001 "张三" 1002 "李四"
Ventajas y desventajas de la estructura Hash
  • Ventajas: consume menos memoria y CPU y ahorra espacio en comparación con el almacenamiento de cadenas
  • Desventajas: La función de caducidad no se puede utilizar en el campo, solo en la llave. La arquitectura de clúster de Redis no es adecuada para un uso a gran escala.

Lista

Lista de operaciones comunes

Inserte la descripción de la imagen aquí

lpush one two  //将一个或多个值value插入到key列表的表头(最左边)
rpush key value //将一个或多个值value插入到key列表的表尾(最右边)

LPOP key //移除并返回key列表的头元素
RPOP key //移除并返回key列表的尾元素
LRANGE key start stop //返回列表key中指定区间内的元素,区间以偏移量start和stop指定
BLPOP key [key ...] timeout //从key列表表头弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待
BRPOP key [key ...] timeout //从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待
Enumerar escenarios de aplicación
  • Estructura de datos común
  1. Pila (pila) = LPUSH + RPOP ( FILO )
  2. Cola (cola) = LPUSH + LRPOP ( FIFO )
  3. Bloqueo MQ (cola de bloqueo) = LPUSH + BRPOP

Colocar

Establecer operaciones comunes

Inserte la descripción de la imagen aquí

sadd two one two three // 添加key 为two value 
SREM key member [member ...] //从集合key中删除元素
SMEMBERS key //获取集合key中所有元素
SCARD key //获取集合key的元素个数
SISMEMBER key member //判断member元素是否存在于集合key中
SRANDMEMBER key [count] //从集合key中选出count个元素,元素不从key中删除
SPOP key [count] //从集合key中选出count个元素,元素从key中删除
  • Operación aritmética
SINTER key [key ...] //交集运算
SINTERSTORE destination key [key ..] //将交集结果存入新集合destination中
SUNION key [key ..] //并集运算
SUNIONSTORE destination key [key ...] //将并集结果存入新集合destination中
SDIFF key [key ...] //差集运算
SDIFFSTORE destination key [key ...] //将差集结果存入新集合destination中

ZSet

Operaciones comunes de ZSet

Inserte la descripción de la imagen aquí

ZADD myzset 1 "one" //往有序集合key中加入带分值元素
ZREM key member [member …] //从有序集合key中删除元素
ZSCORE key member  //返回有序集合key中元素member的分值
ZINCRBY key increment member //为有序集合key中元素member的分值加上increment 
ZCARD key //返回有序集合key中元素个数
ZRANGE key start stop [WITHSCORES] //正序获取有序集合key从start下标到stop下标的元素
ZREVRANGE key start stop [WITHSCORES]//倒序获取有序集合key从start下标到stop下标的元素
Aplicación Zset
1. 点击新闻:
ZINCRBY hotNews:20201221 1 完善低龄未成年人犯罪规定
2. 展示当日排行前十:
ZREVRANGE hotNews:20201221 0 9 WITHSCORES
3. 七日搜索榜单计算:
ZUNIONSTORE hotNews:20201215-20201221  7 
hotNews:20201215 hotNews:20201216... hotNews:20201221
4. 展示七日排行前十:
ZREVRANGE hotNews:20201215-20201221 0 9 WITHSCORES

Penetración de caché, avalancha de caché

Penetración de caché
  • El sistema de caché general almacena en caché las consultas de acuerdo con la clave. Si el valor correspondiente no existe, debe ir al sistema back-end para encontrarlo (como DB). Algunas solicitudes maliciosas consultarán deliberadamente claves inexistentes y la cantidad de solicitudes es grande, lo que causará mucha presión en el sistema de back-end. A esto se le llama penetración de caché.
  • El resultado de la consulta también se almacena en caché cuando el resultado de la consulta está vacío. El tiempo de caché se establece para que sea más corto, o se insertan los datos correspondientes a la clave y se borra la caché.
  • Filtrar claves que no deben existir. Puede poner todas las claves posibles en un mapa de bits grande y filtrar por el mapa de bits al realizar consultas.
Avalancha de caché
  • Cuando el servidor de caché se reinicia o una gran cantidad de cachés falla en un cierto período de tiempo, cuando falla, ejercerá mucha presión sobre el sistema back-end. Hacer que el sistema se bloquee.
  • Una vez que el caché no es válido, el número de subprocesos que leen la base de datos y escriben el caché se controla mediante el bloqueo o la cola. Por ejemplo, solo un subproceso puede consultar datos y escribir caché para una determinada clave, y otros subprocesos esperan.
  • Como caché de segundo nivel, A1 es la caché original, A2 es la caché de copia, cuando A1 falla, puede acceder a A2, el tiempo de caducidad de la caché de A1 se establece en corto plazo y A2 se establece en largo plazo
  • Establezca diferentes tiempos de vencimiento para diferentes claves para que los puntos de tiempo de invalidación de la caché sean lo más uniformes posible.

Supongo que te gusta

Origin blog.csdn.net/qq_37248504/article/details/111937612
Recomendado
Clasificación