[Compartir] Cinco tipos de datos básicos y escenarios de aplicación de Redis

Prefacio:

Redis admite cinco tipos de datos básicos:

  1. Cadena (tipo de cadena): puede ser una cadena ordinaria, un número entero o un valor de coma flotante. Puede establecer el tiempo de caducidad; puede realizar agregar, obtener, establecer, aumentar, disminuir y otras operaciones en cadenas.
  2. Hash (tipo hash): similar a una matriz, cada elemento es un par clave-valor de campo y valor. Las operaciones como agregar, eliminar, verificar y modificar se pueden realizar en toda la tabla hash o en un solo elemento.
  3. Lista (tipo de lista): una lista vinculada, cada nodo en la lista vinculada contiene una cadena. Las operaciones como pop y push se pueden realizar en la cabeza y la cola de la lista enlazada.
  4. Conjunto (tipo de colección): una colección desordenada similar a una lista que admite operaciones como agregar, eliminar y buscar. Cada elemento de la colección es único.
  5. Zset (tipo de conjunto ordenado): También es un conjunto desordenado. A diferencia del conjunto, cada elemento estará asociado con una puntuación, y la puntuación puede hacer que los elementos del conjunto se ordenen de acuerdo con ciertas reglas. Se pueden realizar operaciones como aumentar o disminuir la fracción de elementos de la colección.

Las características y los métodos de los cinco tipos de datos básicos anteriores son diferentes y puede elegir según sus necesidades específicas.

inserte la descripción de la imagen aquí


Cadena Tipo de cadena:

Las cadenas en Redis pueden ser cualquier dato binario, como imágenes JPEG u objetos JSON, etc. El tipo de cadena se usa principalmente en escenarios como almacenamiento en caché, conteo y limitación de corriente.

Las siguientes son algunas características del tipo String de Redis:

  • El tipo String de Redis puede almacenar cualquier forma de cadena, incluidos los datos binarios.
  • El tipo String de Redis tiene una velocidad de acceso y almacenamiento muy eficiente, y admite operaciones rutinarias como lectura, escritura, anexión y eliminación.
  • El tipo String de Redis también admite algunas funciones especiales, como realizar operaciones de autoincremento o autodecremento en cadenas específicas, o realizar operaciones de bits en cadenas.

1. Cuerda

Las cadenas en Redis pueden ser cualquier dato binario, como imágenes JPEG u objetos JSON, etc. El tipo de cadena se usa principalmente en escenarios como almacenamiento en caché, conteo y limitación de corriente.

# 设置一个字符串
> SET name "Alice"
OK

# 获取字符串
> GET name
"Alice"

# 修改字符串
> SET name "Bob"
OK

# 获取修改后的字符串
> GET name
"Bob"

2. entero

Las cadenas Redis también pueden almacenar números, que pueden incrementarse o disminuirse. Estas operaciones son atómicas y se pueden usar en escenarios como contadores y tablas de clasificación.

# 将一个整数设置到key中
> SET count 10
OK

# 自增
> INCR count
11

# 自减
> DECR count
10

# 自增指定的值
> INCRBY count 5
15

# 自减指定的值
> DECRBY count 2
13

3. Números de punto flotante

Las cadenas Redis también pueden almacenar números de punto flotante, que pueden realizar varios cálculos complejos, como clasificaciones de puntaje, etc.

# 设置一个浮点数
> SET balance 100.0
OK

# 自增指定的浮点数
> INCRBYFLOAT balance 25.5
125.5

# 自减指定的浮点数
> INCRBYFLOAT balance -50.0
75.5

Hachís Tipo de hash

El tipo Hash de Redis es un tipo de datos que almacena pares clave-valor, similar a Map o Dictionary en otros lenguajes de programación. Permite almacenar múltiples campos y valores correspondientes bajo una clave Redis, y puede leer rápidamente los valores de un solo campo o de múltiples campos.

Aquí hay un ejemplo de un tipo Redis Hash simple:

# 创建一个名为user的Hash类型
> HSET user name "John" age 30 email "[email protected]"
(integer) 3

# 获取user中的所有字段和对应的值
> HGETALL user
1) "name"
2) "John"
3) "age"
4) "30"
5) "email"
6) "[email protected]"

# 获取user中的name字段的值
> HGET user name
"John"

# 获取user中的age和email字段的值
> HMGET user age email
1) "30"
2) "[email protected]"

En este ejemplo, creamos un tipo Hash llamado usuario y configuramos tres campos, a saber , nombre , edad y correo electrónico , y los valores correspondientes son John , 30 y [email protected] respectivamente . Al usar el comando HGETALL, podemos obtener todos los campos y sus valores correspondientes, usar el comando HGET para obtener el valor de un solo campo y usar el comando HMGET para obtener los valores de varios campos.

La siguiente es una leyenda de tipo Redis Hash:

+--------+
|   key  |
+--------+
| name   |  value
| age    |  value
| email  |  value
+--------+

En esta ilustración, usamos el nombre de la clave como el nombre del tipo Hash. El tipo Hash contiene múltiples campos y valores correspondientes, y cada campo tiene un nombre, como nombre , edad y correo electrónico . El valor de un campo puede ser cualquier tipo de dato, como cadenas, enteros, listas, etc.


Lista Tipo de lista

Cuando necesitamos almacenar datos secuenciales, podemos usar el tipo Lista de Redis. Cada elemento de la Lista contiene un valor, que puede ser una cadena, un número, etc. Cada valor tiene un índice correspondiente, y el índice comienza desde 0.

Los siguientes son algunos comandos de uso común del tipo Lista:
1. LPUSH/RPUSH: agrega uno o más elementos a la lista desde la izquierda o la derecha

LPUSH key value1 value2      # 从左边添加两个元素到列表中
RPUSH key value3 value4      # 从右边添加两个元素到列表中

2. LPOP/RPOP: Eliminar y devolver el primer elemento de la izquierda o la derecha

LPOP key       # 移除并返回左边第一个元素
RPOP key       # 移除并返回右边第一个元素

3. LINDEX: Obtener el elemento en el índice especificado

LINDEX key 0      # 获取索引为0的元素

4. LRANGE: Obtenga los elementos dentro del rango de índice especificado y devuelva una lista

LRANGE key 0 2     # 获取索引为0~2的元素

El siguiente es un ejemplo de un tipo de lista:

# 从左边添加三个元素到列表中
LPUSH mylist "hello"
LPUSH mylist "world"
LPUSH mylist "redis"

# 获取列表长度,应该输出3
LLEN mylist

# 获取索引为0~2的元素,应该输出["redis","world","hello"]
LRANGE mylist 0 2

# 获取索引为1的元素,应该输出"world"
LINDEX mylist 1

# 从右边移除一个元素,应该输出"hello"
RPOP mylist

# 从左边移除一个元素,应该输出"redis"
LPOP mylist

# 获取列表长度,应该输出1
LLEN mylist

Tipo de conjunto de colección

El tipo Set de Redis es una colección desordenada de cadenas. Cada cadena es única (es decir, no hay elementos duplicados en el conjunto). El tipo Set admite operaciones como agregar, eliminar y buscar elementos. Las siguientes son algunas operaciones comunes del tipo Set:

1. Agregar elementos:

sadd key member [member ...]

示例:
sadd myset "hello"
sadd myset "world"
sadd myset "hello"  # 该元素已存在,不会重复添加

2. Eliminar elementos

srem key member [member ...]

示例:
srem myset "hello"

3. Obtenga la cantidad de elementos en la colección:

scard key

示例:
scard myset

4. Determinar si el elemento existe en la colección:

sismember key member

示例:
sismember myset "hello" # 返回 0(false)
sismember myset "world" # 返回 1(true)

5. Consigue todos los elementos de la colección:

smembers key

示例“
smembers myset # 返回 ["world"]

6. Consigue aleatoriamente los elementos de la colección.

srandmember key [count]

示例:
srandmember myset # 返回 "world"
srandmember myset 2 # 返回 ["world", "hello"](元素顺序随机)

Colección ordenada Tipo ZSet

El tipo ZSet de Redis es un tipo de colección ordenada, que puede almacenar varios miembros, y cada miembro tiene una puntuación correspondiente. Según el tamaño de la puntuación, los miembros del ZSet se pueden ordenar de pequeño a grande o de grande a pequeño. Ordenar, mientras que los miembros son únicos en ZSet y no se repetirán.

Cada miembro en ZSet es un elemento de tipo cadena, y la puntuación correspondiente es un valor de tipo flotante, y la puntuación se puede usar para ordenar los miembros. Además de admitir las operaciones de lectura y escritura de los tipos de colecciones comunes, ZSet también proporciona algunas instrucciones especiales, como insertar miembros, eliminar miembros, obtener miembros según el rango de puntuación, etc.

Aquí hay un código de muestra:

# 连接Redis
import redis
r = redis.Redis(host='127.0.0.1', port=6379, db=0)

# 将成员和分数插入ZSet中
r.zadd('myzset', {
    
    'member1': 1, 'member2': 2})

# 获取ZSet中的成员
members = r.zrange('myzset', 0, -1)

# 根据分数范围获取成员
members_with_scores = r.zrangebyscore('myzset', 1, 2, withscores=True)

# 删除成员
r.zrem('myzset', 'member1')

Aquí hay una leyenda de ejemplo:

+---------------------+
| ZSet                |
|---------------------|
| member1   | score=1  |
|---------------------|
| member2   | score=2  |
+---------------------+

¿Para qué escenarios son adecuadas las estructuras de datos de Redis?

Redis admite cinco estructuras de datos diferentes correspondientes a escenarios de aplicación:

  1. String (String): Una cadena puede almacenar cualquier tipo de datos, como números, matrices, etc. String es el tipo de datos más básico de Redis y el tipo de datos más utilizado en Redis. En Redis, se utiliza principalmente para almacenar objetos serializados, contadores, cachés, etc.
  2. Hash: un hash es una colección de pares clave-valor donde cada clave se asigna a un valor. El tipo hash es adecuado para almacenar objetos, donde cada elemento tiene una lista de propiedades. Por ejemplo: información del usuario, información del producto, etc.
  3. Lista (Lista): La lista es una de las estructuras de datos más simples de Redis. Los elementos de la lista se almacenan en el orden de inserción, y se admiten operaciones rápidas de inserción y eliminación en ambos extremos de la lista. Las listas se pueden usar para almacenar elementos que deben ordenarse, como mensajes de registro, registros de chat, etc.
  4. Conjunto (Set): un conjunto es una colección de cadenas única y desordenada, y los elementos del conjunto no se pueden repetir. Los conjuntos admiten operaciones comunes como la intersección, la unión y la diferencia, y a menudo se utilizan para la gestión de etiquetas.
  5. Conjunto ordenado (Zset): un conjunto ordenado es similar a un conjunto, excepto que cada elemento del conjunto tiene una puntuación. La puntuación puede ser cualquier número de coma flotante y se utiliza como base de ordenación entre elementos. Los conjuntos ordenados se utilizan a menudo en el contexto de tablas de clasificación o marcadores.

En resumen, las diferentes estructuras de datos de Redis son adecuadas para diferentes escenarios de procesamiento de datos. Son muy flexibles y fáciles de expandir. En aplicaciones prácticas, debemos elegir una estructura de datos adecuada para almacenar datos de acuerdo con las necesidades reales y aprovechar al máximo sus características para mejorar el rendimiento del sistema.

Supongo que te gusta

Origin blog.csdn.net/weixin_42380504/article/details/131726231
Recomendado
Clasificación