Resumen de aprendizaje de Redis Resumen de Redis

Resumen de Redis

Introducción a Redis


Redis:开源、免费、高性能、K-V数据库、内存数据库、非关系型数据库,支持持久化、集群和事务

Instalación y configuración de Redis


  1. Ejecute Redis con la ventana acoplable
docker pull redis
docker run -d --name redis -p 6379:6379 redis
docker exec -it redis redis-cli
  1. Instalación de Linux
  1. Asegúrese de que Linux tenga gcc instalado
  2. Descarga Redis
    wget http://download.redis.io/releases/redis-4.0.1.tar.gz
  3. Abrir la cremallera
    tar -zxvf redis-4.0.1.tar.gz
  4. Compilar después de ingresar al directorio
    cd redis-4.0.1
    make MALLOC=libc
  5. Instalación
    make PREFIX=/usr/local/redis install# Especifique el directorio de instalación como / usr / local / redis
  6. puesta en marcha
    /usr/local/redis/bin/redis-server
  1. Configuración de Redis
  1. Ingrese al directorio de Redis descomprimido y copie redis.conf al directorio del archivo de instalación
    cp redis.conf /usr/local/redis
  2. Inicie Redis con una configuración personalizada
    /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
  1. Configuración detallada
  • demonizar: el valor predeterminado es no, modifíquelo a sí para habilitar el subproceso del demonio
  • puerto: establezca el número de puerto, el predeterminado es 6379
  • enlazar: enlaza la dirección IP
  • bases de datos: el número de bases de datos, el valor predeterminado es 16
  • save <second> <changes>: especifique cuántas veces y cuántas operaciones de actualización, y luego sincronice los datos con el archivo de datos
    #redis默认配置有三个条件,满足一个即进行持久化
    save 900 1# 900s 有 1 个 改
    save 300 10# 300s 有 10 个
    save 60 10000# 60s 有10000changes
  • dbfilename: especifique el nombre del archivo de la base de datos local, el valor predeterminado es dump.rdb
  • dir: especifique el directorio de almacenamiento de la base de datos local, el predeterminado es ./carpeta actual
  • requirepass: establece una contraseña, cerrada por defecto
    redis -cli -h host -p port -a password
  1. Redis está apagado
  • Utilice el comando kill (apagado anormal, los datos se pierden fácilmente)
    ps -ef|grep -i redis
    kill -9 PID
  • Apagado normal
    redis-cli shutdown

Comandos comunes de Redis


Redis cinco tipos de datos: cadena, hash, lista, conjunto, zset

Mando público
  • DEL key
  • DUMP key: serializa la clave dada y devuelve el valor serializado
  • EXISTE clave: compruebe si existe la clave
  • EXPIRE key second: establezca el tiempo de vencimiento de la clave
  • TTL key: devuelve el tiempo restante de la clave
  • PERSIST clave: elimine el tiempo de caducidad de la clave, y la clave se almacenará de forma persistente
  • Patrón de CLAVE: consulta la clave de un patrón dado de todos los símbolos
  • Tecla RANDOM: devuelve una clave aleatoriamente
  • RANAME key newkey: modificar el nombre de la clave
  • MOVE key db: mueve la clave a la base de datos especificada
  • Tecla TIPO: Devuelve el tipo de valor almacenado en la clave.
EXPIRE key second的使用场景:
1、限时的优惠活动
2、网站数据缓存
3、手机验证码
4、限制网站访客频率
Sugerencias de nombres clave
  1. La clave no debe ser demasiado larga, trate de no exceder los 1024 bytes. No solo consume memoria, sino que también reduce la eficiencia de la búsqueda.
  2. La clave no debe ser demasiado corta, demasiado corta reducirá la legibilidad
  3. En un proyecto, es mejor utilizar un esquema de nomenclatura unificado para la clave, como usuario: 123: contraseña
  4. La clave distingue entre mayúsculas y minúsculas

cuerda

El tipo de cadena es binario seguro y la cadena redis puede contener cualquier dato, como imágenes y objetos serializados. Una clave puede almacenar hasta 512 MB. == Seguridad binaria significa que cuando se transmiten datos, se puede garantizar la seguridad de la información de los datos binarios, es decir, no serán manipulados ni descifrados; si es atacado, se puede detectar a tiempo ==

  • valor setkey_name : el comando no distingue entre mayúsculas y minúsculas, pero key_name sí distingue entre mayúsculas y minúsculas
  • Valor de clave SETNX : establece el valor de la clave cuando la clave no existe. (SET si no existe)
  • obtener key_name
  • GETRANGE key start end: Obtiene la subcadena de la cadena en la clave, comenzando desde el inicio y terminando con el final
  • MGET key1 [key2…]: Obtiene múltiples claves
  • OBTENER VALOR DE NOMBRE DE CLAVE: establece el valor de la clave y devuelve el valor anterior de la clave. Cuando la clave no existe, devuelve nil
  • Tecla STRLEN: Devuelve la longitud de la cadena almacenada en la clave.
  • INCR KEY_NAME : El valor almacenado en la clave de comando INCR es +1, si no hay clave, el valor en la clave se inicializa a 0 y luego se agrega a 1.
  • INCRBY KEY_NAME incremento
  • DECR KEY_NAME : el valor de la clave se reduce en uno
  • DECRBY KEY_NAME
  • agregar valor de key_name: empalme de cadenas, agregar al final, si no existe, asignarle un valor

Escenarios de aplicación de cadenas:

1、String通常用于保存单个字符串或JSON字符串数据
2、因为String是二进制安全的,所以可以把保密要求高的图片文件内容作为字符串来存储
3、计数器:常规Key-Value缓存应用,如微博数、粉丝数。INCR本身就具有原子性特性,所以不会有线程安全问题

picadillo

El hash de Redis es una tabla de mapeo entre el campo y el valor del tipo de cadena. El hash es especialmente adecuado para almacenar objetos . Cada almohadilla puede almacenar 2 32 pares -1 clave-valor. Puede verse como un contenedor MAP para KEY y VALUE. En comparación con JSON, el hash ocupa muy poco espacio en la memoria.

Comandos comunes

  • HSET key_name field value: establece el campo y el valor de la clave especificada
  • Valor del campo clave de hmset [campo1, valor1]
  • hget campo clave
  • campo clave hmget [campo1]
  • hgetall key: devuelve todos los campos y valores en la tabla hash
  • hkeys key: Obtiene todos los campos de la tabla hash
  • hlen key: obtenga el número de campos en la
    tabla hash - hdel key field [field1]: elimine uno o más campos en la tabla hash

Escenarios de aplicación

Hash的应用场景,通常用来存储一个用户信息的对象数据。
1、相比于存储对象的string类型的json串,json串修改单个属性需要将整个值取出来。而hash不需要。
2、相比于多个key-value存储对象,hash节省了很多内存空间
3、如果hash的属性值被删除完,那么hash的key也会被redis删除

lista

Similar a LinkedList en Java.

Comandos comunes

  • lpush clave value1 [value2]
  • rpush clave value1 [value2]
  • Valor de la clave lpushx: inserte el valor de la izquierda, si la lista no existe, no opere
  • Valor de la clave rpushx: inserte el valor de la derecha, si la lista no existe, no opere
  • llen key: Obtiene la longitud de la lista
  • índice de clave de lindex: Obtiene el elemento del índice especificado
  • lrange key start stop: Obtiene los elementos en el rango especificado de la lista
  • tecla lpop: elimina el primer elemento de la izquierda
  • clave prop: elimina el último elemento de la lista
  • blpop key [key1] timeout: Elimina y obtén el primer elemento de la lista. Si no hay elementos en la lista, la lista se bloqueará hasta que se agote el tiempo de espera o se encuentre el elemento emergente
  • brpop key [key1] timeout: Elimina y obtén el último elemento de la lista. Si no hay elementos en la lista, la lista se bloqueará hasta que se agote el tiempo de espera o se encuentre el elemento emergente
  • ltrim key start stop: modifique la lista para que la lista solo conserve los elementos en el intervalo especificado, y los elementos que no están en el intervalo especificado serán eliminados
  • lset key index value: el valor del índice especificado
  • linsert key before | after world value: inserta un elemento antes o después del elemento de la lista

Escenarios de aplicación

1、对数据大的集合数据删减
		列表显示、关注列表、粉丝列表、留言评价...分页、热点新闻等
2、任务队列
		list通常用来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样通过order by来排序

suplemento:

  • rpoplpush list1 list2 Elimina el último elemento de list1, agrega el elemento a list2 y devuelve este elemento
    . Este comando se puede utilizar para implementar el proceso de colocación de pedidos, inicio de sesión del sistema de usuario y registro de SMS, etc.

colocar

Único, desordenado

  • sadd key value1 [value2]: agrega miembros a la colección
  • scard key: devuelve el número de miembros de la colección
  • Tecla de olor: devuelve todos los miembros del conjunto.
  • Miembro clave del miembro: determina si el elemento miembro es un miembro del miembro clave del conjunto.
  • srandmember key [count]: devuelve uno o más números aleatorios en el conjunto
  • srem key member1 [member2]: elimina uno o más miembros del conjunto
  • clave spop: elimina y devuelve un elemento aleatorio en el conjunto
  • miembro de destino de origen smove: mueve el elemento de miembro de la colección de origen a la colección de destino
  • sdiff key1 [key2]: devuelve la diferencia de todos los conjuntos
  • sdiffstore destination key1 [key2]: Devuelve la diferencia de todos los conjuntos dados y los almacena en el destino.
对两个集合间的数据[计算]进行交集、并集、差集运算
1、以非常方便的实现如共同关注、共同喜好、二度好友等功能。对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存储到一个新的集合中。
2、利用唯一性,可以统计访问网站的所有独立 IP

zset

Ordenado y no repetitivo. Cada elemento está asociado con una puntuación de tipo doble y Redis ordena de menor a mayor según la puntuación. La partitura se puede repetir

ZADD key score1 memeber1
ZCARD key: Obtiene el número de elementos
en el conjunto
ZCOUNT key min max Calcule el número de miembros con el puntaje de intervalo especificado en el conjunto ordenado ZCOUNT key min max Calcule el número de miembros con el puntaje de intervalo especificado en el conjunto
ordenado miembro clave ZRANK: retorno El índice del miembro especificado del conjunto
ordenado clave ZREVRANGE inicio parada: Devuelve el miembro en el rango especificado del conjunto ordenado, y la puntuación es desde el más alto hasta el final a través del índice.
Clave ZREM miembro [miembro…] Elimina uno o más miembros del conjunto ordenado.
ZREMRANGEBYRANK clave inicio parada Elimina todos los miembros del intervalo de clasificación dado en el conjunto ordenado (el primer lugar es 0) (rango bajo a alto)
Clave ZREMRANGEBYSCORE mín máx Eliminar todo miembros del intervalo de puntuación dado en el conjunto ordenado

常用于排行榜:
1、如推特可以以发表时间作为score来存储
2、存储成绩
3、还可以用zset来做带权重的队列,让重要的任务先执行

Jedis 和 Spring-data-redis


  1. Conectar redis
@Test
public void test(){
    
    
	Jedis jedis = new Jedis("host",port);
	jedis.auth("password");
	// 操作redis
	jedis.close();
}
  1. JedisPool
// 创建config
JedisPoolConfig config = new JedisPoolConfig();
con.setMaxTotal(5);// 最大连接数
...
// 创建连接池
JedisPool pool = new JedisPool(config,host,port);
Jedis jedis = pool.getResource();
jedis.auth();
  1. Primavera-datos
  • Importar Jedis y Spring-data-redis
  • El archivo de configuración es el siguiente:
    Inserte la descripción de la imagen aquí
    conexión de prueba
    Inserte la descripción de la imagen aquí
  • Configure el método de serialización:
    guarde los datos en redis, es necesario serializarlos y JdkSerializationRedisSerializer se usa para la serialización de forma predeterminada. JdkSerializationRedisSerializer agrega una cadena de cadenas a todas las claves y valores, así como a los caracteres originales de la clave hash y el valor hash.Inserte la descripción de la imagen aquí

Funciones de Redis


Publicar y suscribirte

La publicación y suscripción de Redis (pub / sub) es un modo de comunicación de mensajes: el remitente (pub) envía un mensaje y el suscriptor (sub) recibe el mensaje.

Los clientes de Redis pueden suscribirse a cualquier número de canales.

La siguiente figura muestra la relación entre el canal channel1 y los tres clientes que se suscriben a este channel-client2, client5 y client1:
Inserte la descripción de la imagen aquí
Cuando se envía un nuevo mensaje al canal channel1 a través del comando PUBLISH, se enviará este mensaje para suscribirse a él. los tres clientes:
Inserte la descripción de la imagen aquí
comandos

  • suscribirse al canal [canal ...]: suscribirse a uno o más canales
  • psubscribe pattern [patrón ...]: suscríbase a uno o más canales que se ajusten al patrón especificado
  • publicar mensaje de canal: enviar información al canal especificado
  • cancelar suscripción [canal [canal…]]: cancelar la suscripción al canal
  • juego de palabras suscribirse [patrón [patrón…]]: Cancelar la suscripción a todos los canales de un patrón determinado

Escenarios de aplicación

构建实时的消息系统,比如普通聊天、群聊等功能。
1、博客网站订阅,当作者发布就可以推送给粉丝
2、微信公众号模式

Base de datos múltiple de Redis

  • seleccione db
  • mover tecla db
  • flushdb
  • flushall

Transacción de Redis

Las transacciones de Redis pueden ejecutar varios comandos a la vez (ejecutados secuencialmente en secuencia, y no se permite insertar otros comandos en la secuencia de ejecución durante la ejecución).
1. Redis serializará todos los comandos en una transacción y luego los ejecutará en orden
2. Durante la ejecución, no serán insertados por otros comandos y no se permite la interferencia.

Inserte la descripción de la imagen aquí

  1. Ingrese el comando múltiple para comenzar, todos los comandos ingresados ​​ingresarán a la cola de comandos a su vez, pero no se ejecutarán
  2. Hasta que ingrese exec, Redis ejecutará los comandos en la cola anterior en secuencia
    Inserte la descripción de la imagen aquí
  3. descartar ejecución de la cola
    Inserte la descripción de la imagen aquí
  4. Si un comando reporta un error, solo el comando que reporta el error no se ejecutará y otros comandos se ejecutarán sin reversión.
    Inserte la descripción de la imagen aquí
  5. Si un comando en la cola informa un error (error de sintaxis), toda la cola se cancelará durante la ejecución.

Replicación maestro-esclavo

Configuración de replicación maestro-esclavo de Redis

Clúster de Redis

Configuración del clúster de Redis:
documentación de
Redis Tutorial del clúster de
Redis
Configuración del clúster de Redis-5.0.5 La diferencia entre Redis independiente y la configuración del clúster de Redis
Redis-4.0 del clúster

Persistencia de Redis

  1. RDB

RDB es el mecanismo de persistencia predeterminado para Redis. RDB es equivalente a una instantánea, que guarda un estado

Ventajas:
velocidad de ahorro, velocidad de restauración extremadamente rápida,
adecuada para copias de seguridad en caso de desastre
Desventajas:
las máquinas de memoria pequeña no son adecuadas para su uso. El mecanismo RDB tomará una instantánea si cumple con los requisitos.

  1. AOF
    Si Redis se cae accidentalmente, el método RDB perderá todos los cambios después de la última instantánea. Si se requiere que la aplicación no pierda ninguna modificación, se puede utilizar la persistencia AOF.

AOF: archivo solo para agregar: Redis agregará cada comando de escritura recibido al archivo (el valor predeterminado es appendonly.aof). Cuando Redis se reinicia, volverá a ejecutar el comando de escritura en el archivo para reconstruir el contenido de toda la base de datos.

El problema que surge:
algunos comandos son redundantes.

Supongo que te gusta

Origin blog.csdn.net/qq_42647711/article/details/104814203
Recomendado
Clasificación