Redis utiliza comúnmente estructuras de datos y escenarios de aplicación para hematemesis

1. Tipo de datos de cadena:

Operaciones comunes para cadenas:

  • SET key value Almacene pares clave-valor, SET sobrescribe los valores antiguos, independientemente del tipo
  • MSET key value [key value ...] Pares de clave-valor de cadena de la tienda por lotes
  • SETNX key value Almacene un par clave-valor inexistente, si la clave existe, no haga nada
  • GET key Obtenga el valor correspondiente a la clave según la clave
  • MGET key [key ...] Obtenga pares de clave-valor de cadena en lotes
  • DEL key Eliminar el par clave-valor correspondiente a la clave
  • EXPIRE key seconds Establecer el tiempo válido para el valor clave dado

Suma y resta atómica

  • INCR key Agregue 1 al número correspondiente al valor clave
  • DECR key Disminuya el valor almacenado por clave en 1
  • INCRBY key increment Añadir incremento a la matriz de almacenamiento de claves
  • DECRBY key increment Reste el incremento de la matriz almacenada por la clave

Escenario de aplicación:

  • Solo el valor de cache: SET key value,GET key

  • Objeto Cache:
    SET user:1 value(json字符串);
    Depósito: MSET user:1:name zhangsan user:1:age 10
    Tomar: MGET user:1:name user:1:age
    mejor que el formato JSON para facilitar la manipulación atributo único, que el mejor desempeño, la elección óptimaHASH

  • Bloqueos distribuidos:
    SETNX product:10001 true// Enviar de nuevo 1 para indicar que el bloqueo fue exitoso, no lo use si hay desventajas
    SETNX product:10001 true// Enviar de nuevo 0 para indicar que el bloqueo falló
    DEL product:10001// Liberar el bloqueo
    SET product:10001 true ex 10 nx// Evitar que el programa se cierre inesperadamente resultando en un punto muerto

  • El uso de
    Escenarios de uso de lectura de cuentas públicas de WeChat
    estadísticas de lectura de contador en Redis:

    • INCR article:readcount:{文章Id} Estadísticas de lectura de artículos
    • GET article:readcount:{文章Id}
  • El ID único del sistema distribuido genera
    INCRBY orderId 1000redis para generar el número de serie para mejorar el rendimiento.


Estructura 2.HASH

Operaciones comunes

  • HSET key field value // Almacenar el valor clave de una clave de tabla hash
  • HSETNX key field value // Almacena el valor clave de una clave de tabla hash inexistente
  • HMSET key field value [field value ...] Almacene múltiples pares clave-valor en una clave de tabla hash
  • HGET key field Obtener el valor clave de un campo en una tabla hash
  • HMGET key field [field ...] Obtenga los valores clave de varios campos en la clave de la tabla hash
  • HDEL key field [field ...] Eliminar el valor de la clave de campo en la clave de la tabla hash
  • HLEN key El número de campos en la clave de la tabla hash
  • HGETALL key Devuelve todos los pares clave-valor en la clave de la tabla hash
  • HINCRBY key field increment Agregue un incremento incremental al valor del campo en la clave de la tabla hash

Escenario de aplicación

  • Almacenamiento de objetos
    HSET user:10001 name zhangsan age 10// Establecer propiedades de objeto
    HGET user:10001 name age// Obtener información de atributos

  • Escenario de carrito de compras
    Escena del carro de compras
    de comercio electrónico Estructura de datos del carrito de compras de comercio electrónico:

    • Usar ID de usuario como clave
    • ID del producto es campo
    • La cantidad de productos es valor

    Operación del carrito de compras:

    • Añadir producto-> HSET cart:1001 10088 1
    • Aumenta el número->HINCRBY cart:1001 10088 1
    • Número total de productos->HLEN cart:1001
    • Eliminar producto HDEL cart:1001 10088
    • Obtenga todos los artículos en el carrito de compras->HGETALL cart:1001

3.Listar estructura de datos

Diagrama de estructura de lista

Comandos comunes

  • LPUSH key value [value ...] Inserte uno o más valores en el encabezado de la lista de claves (más a la izquierda)
  • RPUSH key value [value ...] Inserte uno o más valores en el encabezado de la lista de claves (extremo derecho)
  • LPOP key Eliminar y devolver el elemento de encabezado de la lista de claves
  • RPOP key Retire y devuelva el elemento de cola de la llave
  • LRANGE key start stop Devuelve el elemento del intervalo especificado en la clave, el desplazamiento del intervalo se especifica al iniciar y detener
  • BLPOP key [key ...] timeoutAparece un elemento desde la cabeza de la tecla. Si no hay ningún elemento en la tecla, se bloqueará y esperará, bloqueará el tiempo de espera, si el tiempo de espera es 0, significa bloquear todo el tiempo
  • BRPOP key [key ...] timeoutAparece un elemento desde el final de la tabla de claves, si no hay ningún elemento en la clave, bloqueará la espera, bloqueará el tiempo de espera, si el tiempo de espera es 0, siempre bloqueará

Escenario de aplicación

  • Estructuras de datos comunes

    • Pila = LPUSH + LPOP-> Salida avanzada de FILO
    • Cola = LPUSH + RPOP-> FIFO primero en entrar, primero en salir
    • Bloqueo de MQ (cola de bloqueo) = LPUSH + BRPOP

  • Flujo de mensajes de cuenta pública de Weibo y WeChat

Diagrama esquemático del flujo de mensajes de Weibo y WeChat
El ejemplo se centra en el uso de llantas de repuesto de número público WeChat y Mac Talk en Redis:

  • Mac Talk lanzó el ID de mensaje 10018-> LPUSH msg:{订阅人Id} 10018
  • La llanta de refacción dijo que el automóvil lanzó el mensaje ID 10019->LPUSH msg:{订阅人Id} 10019
  • Ver las últimas noticias suscritas, como 6->LRANGE msg:{订阅人Id} 0 5

Estructura 4.SET

Comandos comunes

  • SADD key member [member ...] Ponga uno o más miembros en la clave, ignore si el elemento existe
  • SREM key member [member ...] Eliminar uno o más miembros de la clave de colección
  • SMEMBERS key Devuelve todos los elementos en la clave de colección
  • SCARD key El número de elementos en la clave de colección.
  • SISMEMBER key member Determinar si miembro es un elemento en clave
  • SRANDMEMBER key [count] Contar elementos al azar de la clave, los elementos no se eliminan de la clave
  • SPOP key [count] Aleatoriamente tome elementos de conteo de la clave y elimine los elementos de la clave
  • SINTER key [key ...]Operación de intersección
  • SINTERSTORE destination key [key ...] Almacene el resultado de la intersección en el nuevo destino de recolección
  • SUNION key [key ...] Operación sindical
  • SUNIONSTORE destination key [key ...]Guarde el resultado de la unión en el nuevo destino
    : SDIFF key [key ...]operación de diferencia,

Escenario de aplicación

  • Modelo de lotería
    Modelo de lotería
    El uso de loterías participantes en Redis en el ejemplo:
    • Haz clic para participar en el sorteo para unirte a la colección-> SADD key {userId}
    • Ver todos los usuarios que participan en el sorteo->SMEMBERS key
    • Ganadores del conteo de sorteos->SRANDMEMBER key [count]/SPOP key [count]

  • Me gusta, sigue y recopila en Weibo y WeChat

Gustar y seguir el modelo de colección.
El uso del modelo similar en Redis en el ejemplo:

  • Me gusta->SADD like:{消息id} {用户id}

  • A diferencia de->SREM like:{消息id} {用户id}

  • Comprueba si al usuario le gusta->SISMEMBER like:{消息id} {用户id}

  • Obtenga una lista de usuarios que le gustaron->SMEMBERS like:{消息id}

  • Obtenga el número de me gusta->SCARD like:{消息id}

  • WeChat Weibo sigue el modelo:
    Modelo de atención WeChat
    Ejemplo de WeChat sigue el modelo utilizado en Redis:

    • Gente Zhang San sigue->zhangsanSET->{lisi,sima,luban}
    • Gente que Li Si sigue->lisiSET->{zhangsan,sima,luban,qiaofeng}
    • Gente que Wang Wu sigue->wangwuSET->{zhangsan,lisi,luban,qiaofeng,duanyu}
    • Las personas que están preocupadas por Zhang San y Li Si->SINTER zhangdanSET lisiSET
    • Joe Smith también preocupado por la atención de la gente Doe -> lista zhangsanSET para cada miembro de la lista de juzgar SISMEMBER simaSET lisi,SISMEMBER lubanSET lisi
    • Gente que Zhang San puede conocer->SDIFF lisiSET zhangsanSET

  • Examen de productos
    Cribado de productos básicos de la plataforma de comercio electrónico de operación colectiva: el uso de condiciones de cribado de productos en redis

    • SADD brand:HUAWEI p30
    • SADD brand:xiaomi mi-6X
    • SADD brand:IPhone iphone8
    • SADD os:android p30 mi-6X
    • SADD cpu:brand:intel p30 mi-6X
    • SADD ram:8G p30 mi-6X iphone8
    • SINTER os:android cpu:brand:intel ram:8G->{p30 mi-6X}

Estructura de datos de SortedSet

Comandos comunes

  • ZADD key score member [[score member] [score member] ...] Agregue elementos con puntajes a la combinación de teclas ordenada
  • ZREM key member [member ...] Eliminar clave de la colección ordenada
  • ZSCORE key member Devuelve el valor de puntuación de los miembros miembros en la clave ordenada
  • ZINCRBY key increment member Agregue el incremento a la puntuación del elemento miembro en la clave de conjunto ordenada
  • ZCARD key Devuelve el número de elementos de la clave ordenada
  • ZRANGE key start stop [WITHSCORES] Obtenga elementos de la clave de conjunto ordenada del subíndice de inicio para detener el subíndice en orden positivo
  • ZREVRANGE key start stop [WITHSCORES] Obtenga los elementos de la clave de conjunto ordenada del subíndice de inicio para detener el subíndice en orden inverso
  • ZUNIONSTORE destination numkeys key [key ...] Cálculo de la unión
  • ZUNIONSTORE destination numkeys key [key ...] Cálculo de intersección

Escenario de aplicación

  • Escena
    Tabla de clasificación
    de la tabla de clasificación El uso de la tabla de clasificación de Weibo en Redis:
    • Haga clic en Noticias->ZINCRBY hotNews:20190819 1 守护香港
    • Mostrar los diez primeros del día->ZREVRANGE hotNews:20190819 0 10 WITHSCORES
    • Lista de búsqueda de siete días->ZUNIONSTORE hotNews:20190813-20190819 7 hotNews:20190813 hotNews:20190814 hotNews:20190815....hotNews:20190819
    • Mostrar los 10 mejores en el 7º->ZREVRANGE hotNews:20190813-20190819 0 10 WITHSCORES

Inserte la descripción de la imagen aquí

41 artículos originales publicados · Me gustaron 14 · Visitantes más de 10,000

Supongo que te gusta

Origin blog.csdn.net/Yunwei_Zheng/article/details/104976637
Recomendado
Clasificación