Comenzando desde cero: comprender los conceptos y usos básicos de Redis

inserte la descripción de la imagen aquí

introducción

Redis (Remote Dictionary Server) es una base de datos de almacenamiento de pares clave-valor de código abierto y alto rendimiento. Se usa ampliamente en escenarios como la aceleración de caché, la gestión de sesiones y el análisis de datos en tiempo real, y es popular por su excelente rendimiento y diversas estructuras de datos. Este blog lo llevará desde cero a explorar los conceptos y usos básicos de Redis, incluida la estructura de datos, la aceleración de caché, la persistencia, la implementación de clústeres, etc.

1. El concepto básico de Redis

Redis es un sistema de almacenamiento de datos en memoria que admite una variedad de estructuras de datos, incluidas cadenas, hashes, listas, conjuntos y conjuntos ordenados. Aquí hay una breve introducción a estas estructuras de datos:

inserte la descripción de la imagen aquí

1. Cuerdas

String es la estructura de datos más simple en Redis, puede almacenar cualquier tipo de datos, como texto, números, objetos serializados, etc. Estos son algunos ejemplos comunes de manipulación de cadenas:

# 设置一个键为"username"的字符串值
SET username "alice"

# 获取键为"username"的字符串值
GET username

2. hachís

Un hash es una colección de pares clave-valor, adecuada para almacenar propiedades de objetos. Cada clave corresponde a una tabla hash que contiene varios campos y valores. Aquí hay un ejemplo:

# 设置一个键为"user:1"的哈希值
HSET user:1 name "Alice"
HSET user:1 age 30

# 获取键为"user:1"的哈希值的特定字段
HGET user:1 name

3. Listas

Una lista es una lista ordenada de cadenas que se pueden insertar y eliminar en ambos extremos de la lista. Esto es muy útil para implementar escenarios como colas de mensajes. Aquí hay un ejemplo:

# 在列表"messages"的右侧插入一条消息
RPUSH messages "Hello, World!"
RPUSH messages "How are you?"

# 从列表"messages"的左侧弹出一条消息
LPOP messages

4. Conjuntos

Un conjunto es una colección de cadenas desordenadas y no repetitivas. Es adecuado para almacenar un conjunto de valores únicos. Aquí hay un ejemplo:

# 向集合"tags"添加一些标签
SADD tags "redis"
SADD tags "caching"
SADD tags "database"

# 获取集合"tags"中的所有标签
SMEMBERS tags

5. Conjuntos ordenados

Un conjunto ordenado es similar a un conjunto, pero cada miembro está asociado con una puntuación, que se puede usar para cosas como tablas de clasificación. Aquí hay un ejemplo:

# 向有序集合"leaderboard"添加玩家得分
ZADD leaderboard 100 "Alice"
ZADD leaderboard 150 "Bob"
ZADD leaderboard 200 "Charlie"

# 获取前两名玩家和他们的得分
ZREVRANGE leaderboard 0 1 WITHSCORES

En segundo lugar, el uso de Redis

1. Aceleración de caché

inserte la descripción de la imagen aquí

Uno de los usos más comunes de Redis es como capa de almacenamiento en caché. Las aplicaciones pueden almacenar datos a los que se accede con frecuencia en Redis para aumentar la velocidad de lectura y reducir la carga en la base de datos. Cuando la aplicación necesita ciertos datos, primero intentará obtenerlos del caché de Redis, si no existe en el caché, luego los obtendrá de la base de datos y almacenará los datos obtenidos en el caché para uso futuro. Este método es especialmente efectivo en escenarios con más lecturas y menos escrituras.

Pasos detallados y ejemplos de código :

1.1 Inicializar la conexión Redis:

Se debe usar una biblioteca de cliente de Redis adecuada para conectarse al servidor de Redis. En Java, esto se puede lograr utilizando la biblioteca de cliente de Jedis.

import redis.clients.jedis.Jedis;

// 连接到本地的Redis服务器
Jedis jedis = new Jedis("localhost");
1.2 Caché de consultas:

Antes de intentar obtener datos de la base de datos, verifique si los datos requeridos existen en el caché.

String userId = "123";
String cachedData = jedis.get("user:" + userId);
if (cachedData != null) {
    
    
    // 数据存在于缓存中,直接返回
    return cachedData;
}
1.3 Consultar la base de datos:

Si los datos no existen en la memoria caché, los datos se consultan desde la base de datos.

String userData = fetchDataFromDatabase(userId);
1.4 Almacenar en caché:

Almacene los datos obtenidos de la base de datos en la memoria caché de Redis para uso futuro.

jedis.setex("user:" + userId, 3600, userData);

2. Persistencia

inserte la descripción de la imagen aquí

Cuando se trata de la persistencia de Redis, hay dos formas principales: RDB (Base de datos de Redis) y AOF (Archivo de solo agregar). El objetivo principal de la persistencia es restaurar datos y evitar la pérdida de datos después de que se reinicia el servidor Redis. A continuación se presentarán estos dos métodos de persistencia y métodos de configuración en detalle.

2.1 Persistencia de RDB (Base de datos de Redis)

La persistencia de RDB se logra mediante la escritura periódica de instantáneas de conjuntos de datos de Redis en el disco. Estas instantáneas contienen una copia de los datos en un momento determinado. Puede configurar la persistencia de RDB en el archivo de configuración de Redis.

La siguiente es una configuración de ejemplo para la persistencia de RDB:

# 使用RDB持久化
save 900 1        # 在900秒内,如果至少有1个键被更改,则进行快照
save 300 10       # 在300秒内,如果至少有10个键被更改,则进行快照
save 60 10000     # 在60秒内,如果至少有10000个键被更改,则进行快照

En la configuración anterior, savela directiva define que dentro del intervalo de tiempo especificado, si se modifica al menos el número especificado de claves, se realizará la operación de instantánea. Estas instantáneas se guardarán en el sistema de archivos del servidor Redis para que puedan cargarse después de que se reinicie el servidor.

2.2 Persistencia de AOF (archivo de solo adición)

La persistencia de AOF se logra registrando cada operación de escritura. Todas las escrituras en Redis se agregan a un archivo que registra todas las escrituras que se han producido desde que se inició el servidor. Cuando es necesario reiniciar el servidor, puede recuperar los datos volviendo a realizar estas escrituras.

El siguiente es un ejemplo de configuración de persistencia AOF:

# 使用AOF持久化
appendonly yes

En la configuración anterior, habilitó la persistencia de AOF appendonlyconfigurando el elemento de configuración en .yes

3. Alta disponibilidad e implementación de clústeres

inserte la descripción de la imagen aquí

Redis puede lograr una alta disponibilidad a través de la replicación maestro-esclavo, donde un nodo actúa como nodo maestro para aceptar operaciones de escritura y uno o más nodos esclavos replican los datos del nodo maestro. Además, Redis también es compatible con el modo de fragmentación y clúster para proporcionar expansión horizontal y alta disponibilidad. Aquí hay un ejemplo simple de replicación maestro-esclavo:

# 主节点配置
bind 127.0.0.1
port 6379
...

# 从节点配置
bind 127.0.0.1
port 6380
slaveof 127.0.0.1 6379

3. Pasos de operación

En esta sección, detallaremos cómo instalar, iniciar y operar Redis, y cómo implementar la aceleración de caché en su aplicación.

1. Instalar Redis

inserte la descripción de la imagen aquí

Instalar Redis es muy sencillo, dependiendo de tu sistema operativo, puedes elegir diferentes métodos para instalarlo.

Los pasos de instalación de Redis son diferentes para diferentes sistemas operativos. Los siguientes son pasos de instalación detallados para diferentes sistemas:

Linux (por ejemplo, Ubuntu)

  1. Abre una terminal.
  2. Actualizar lista de paquetes:
sudo apt-get update
  1. Instalar Redis:
sudo apt-get install redis-server
  1. Una vez completada la instalación, Redis se iniciará automáticamente como un servicio del sistema.

Mac OS

  1. Abre una terminal.
  2. Si no tiene Homebrew instalado, ejecute el siguiente comando para instalar Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. Instalar Redis:
brew install redis
  1. Una vez completada la instalación, puede iniciar Redis con el siguiente comando:
brew services start redis

ventanas

  1. Vaya a la página de descarga del sitio web oficial de Redis: https://redis.io/download
  2. En la sección "Instalador MSI para Windows", descargue el instalador MSI apropiado para su sistema.
  3. Ejecute el instalador descargado y siga las indicaciones para instalar.
  4. Una vez completada la instalación, puede encontrar la carpeta "Redis" en el menú de inicio y ejecutar "Servidor Redis" para iniciar el servidor Redis.

Elija el método de instalación adecuado según el sistema operativo que esté utilizando y siga los pasos anteriores. Una vez completada la instalación, puede continuar operando Redis de acuerdo con los pasos proporcionados anteriormente.

2. Inicie el servidor Redis

Abra una ventana de terminal y ejecute el siguiente comando para iniciar el servidor Redis:

redis-server

3. Conéctese a Redis

En otra ventana de terminal, ejecute el siguiente comando para conectarse al servidor Redis iniciado:

redis-cli

4. Pruebe diferentes operaciones de estructura de datos

En la línea de comandos de Redis, puede experimentar con varias operaciones de estructura de datos, como cadenas, hashes, listas, conjuntos y conjuntos ordenados. Aquí hay algunas operaciones de ejemplo:

# 设置一个字符串键值对
SET username "alice"

# 获取字符串键的值
GET username

# 设置一个哈希键的字段和值
HSET user:1 name "Alice"
HSET user:1 age 30

# 获取哈希键的字段值
HGET user:1 name

# 在列表中添加元素
RPUSH messages "Hello, World!"
RPUSH messages "How are you?"

# 弹出列表左侧的元素
LPOP messages

# 向集合中添加元素
SADD tags "redis"
SADD tags "caching"
SADD tags "database"

# 获取集合中的所有元素
SMEMBERS tags

# 向有序集合中添加元素
ZADD leaderboard 100 "Alice"
ZADD leaderboard 150 "Bob"
ZADD leaderboard 200 "Charlie"

# 获取有序集合中的前几名元素
ZREVRANGE leaderboard 0 1 WITHSCORES

5. Persistencia de la configuración

En el archivo de configuración de Redis (generalmente redis.conf), puede configurar la persistencia de RDB y AOF. Según sus necesidades, puede ajustar la estrategia de guardado de RDB o habilitar AOF para registrar cada operación de escritura. Después de modificar el archivo de configuración, asegúrese de reiniciar el servidor Redis para que los cambios surtan efecto.

6. Darse cuenta de la aceleración de caché

En su aplicación, puede usar la biblioteca de cliente de Redis para conectarse al servidor de Redis y usar SET, GET y otros comandos cuando corresponda para lograr la aceleración de la memoria caché de datos. Según su lenguaje de programación, debe elegir una biblioteca de cliente adecuada, como Jedis (Java), redis-py (Python), StackExchange.Redis (C#), etc.

Lo anterior es una serie de pasos detallados sobre la instalación, el inicio, la conexión y el funcionamiento de Redis. A través de la operación práctica, tendrá una comprensión más profunda de los conceptos básicos y el uso de Redis.

4. Conclusión

Como base de datos de almacenamiento de memoria de alto rendimiento, Redis proporciona funciones y estructuras de datos enriquecidas, y es adecuado para diversos escenarios de aplicación. Al aprender operaciones y estructuras de datos básicas y obtener una comprensión profunda de conceptos como la aceleración de caché, la persistencia y la alta disponibilidad, puede hacer un mejor uso de Redis para mejorar el rendimiento y la confiabilidad de las aplicaciones. Espero que este blog pueda ayudarlo a comprender los conceptos básicos y los usos de Redis, y aplicar lo que ha aprendido en proyectos reales.

Supongo que te gusta

Origin blog.csdn.net/weixin_46780832/article/details/132278241
Recomendado
Clasificación