Tipos de datos de Redis

Redis principalmente admite los siguientes tipos de datos:

  • string (cadena):Unidad básica de almacenamiento de datos, puede almacenar cadenas, enteros o números de punto flotante.
  • hash (hash):Un conjunto de pares clave-valor, puede almacenar múltiples campos.
  • list (lista):Una lista simple, puede almacenar una serie de elementos de cadena.
  • set (conjunto):Un conjunto desordenado, puede almacenar elementos de cadena no repetidos.
  • zset (sorted set: conjunto ordenado):Similar a un conjunto, pero cada elemento tiene una puntuación (score) asociada.
  • Bitmaps (mapas de bits):Basado en el tipo de cadena, puede operar sobre cada bit.
  • HyperLogLogs (hiperlogaritmos):Se utiliza para la estadística de cardinalidad, puede estimar el número de elementos únicos en un conjunto.
  • Geospatial (geoespacial):Se utiliza para almacenar información de ubicación geográfica.
  • Publicar/Suscribir (Pub/Sub):Un patrón de comunicación de mensajes que permite a los clientes suscribirse a canales de mensajes y recibir mensajes publicados en ese canal.
  • Streams (flujos):Se utiliza para colas de mensajes y almacenamiento de registros, admite persistencia de mensajes y ordenación por tiempo.
  • Modules (módulos):Redis admite la carga dinámica de módulos, lo que permite ampliar las funciones de Redis.

String (cadena)

string es el tipo más básico de Redis; puedes entenderlo como un tipo idéntico a Memcached, donde una clave (key) corresponde a un valor (value).

El tipo string es binario seguro. Esto significa que el string de Redis puede contener cualquier dato, como imágenes jpg u objetos serializados.

El tipo string es el tipo de datos más básico de Redis; el valor de tipo string puede almacenar hasta 512 MB.

Comandos comunes

  • SET key value: Establece el valor de la clave.
  • GET key: Obtiene el valor de la clave.
  • INCR key: Incrementa el valor de la clave en 1.
  • DECR key: Decrementa el valor de la clave en 1.
  • APPEND key value: Añade el valor al final del valor de la clave.

Ejemplo

redis 127.0.0.1:6379> SET ejemplo "Ejemplo"
OK
redis 127.0.0.1:6379> GET ejemplo
"Ejemplo"

En el ejemplo anterior usamos de Redis elSETyGETcomando. La clave es ejemplo, y el valor correspondiente esTutorial para novatos。

Nota:Una clave puede almacenar hasta 512 MB.


Hash (hash)

El hash de Redis es un conjunto de pares clave-valor (key=>value), similar a una pequeña base de datos NoSQL.

El hash de Redis es una tabla de mapeo de campos (field) y valores (value) de tipo string; el hash es especialmente adecuado para almacenar objetos.

Cada hash puede almacenar hasta 2^32 - 1 pares clave-valor.

    Comandos comunes

  • HSET key field value: Establece el valor del campo en la tabla hash.
  • HGET key field: Obtiene el valor del campo en la tabla hash.
  • HGETALL key: Obtiene todos los campos y valores de la tabla hash.
  • HDEL key field: Elimina uno o más campos de la tabla hash.

Ejemplo

DEL ejemploSe utiliza para eliminar la clave utilizada anteriormente en las pruebas; de lo contrario, se producirá un error:(error) WRONGTYPE Operation against a key holding the wrong kind of value

redis 127.0.0.1:6379> DEL ejemplo
redis 127.0.0.1:6379> HMSET ejemplo field1 "Hello" field2 "World"
"OK"
redis 127.0.0.1:6379> HGET ejemplo field1
"Hello"
redis 127.0.0.1:6379> HGET ejemplo field2
"World"

En el ejemplo usamos RedisHMSET, HGETcomando,HMSETestablecimos dosfield=>valuepares, HGET obtiene el correspondientefieldcorrespondientevalue。


List (lista)

La lista de Redis es una lista simple de cadenas, ordenada según el orden de inserción. Puedes agregar un elemento al principio (izquierda) o al final (derecha) de la lista.

La lista puede almacenar hasta 2^32 - 1 elementos.

Comandos comunes

  • LPUSH key value: Inserta el valor en el encabezado de la lista.
  • RPUSH key value: Inserta el valor al final de la lista.
  • LPOP key: Elimina y obtiene el primer elemento de la lista.
  • RPOP key: Elimina y obtiene el último elemento de la lista.
  • LRANGE key start stop: Obtiene los elementos de la lista dentro del rango especificado.

Ejemplo

redis 127.0.0.1:6379> DEL ejemplo
redis 127.0.0.1:6379> lpush ejemplo redis
(integer) 1
redis 127.0.0.1:6379> lpush ejemplo mongodb
(integer) 2
redis 127.0.0.1:6379> lpush ejemplo rabbitmq
(integer) 3
redis 127.0.0.1:6379> lrange ejemplo 0 10
1) "rabbitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

Set (conjunto)

El Set de Redis es un conjunto desordenado de tipo string.

El conjunto se implementa mediante una tabla hash, por lo que la complejidad de agregar, eliminar y buscar es O(1).

Comandos comunes

  • SADD key value: Agrega uno o más miembros al conjunto.
  • SREM key value: Elimina uno o más miembros del conjunto.
  • SMEMBERS key: Devuelve todos los miembros del conjunto.
  • SISMEMBER key value: Determina si el valor es un miembro del conjunto.

Comando sadd

Agrega un elemento string al conjunto set correspondiente a la clave; devuelve 1 si tiene éxito y 0 si el elemento ya está en el conjunto.

sadd key member

Ejemplo

redis 127.0.0.1:6379> DEL ejemplo
redis 127.0.0.1:6379> sadd ejemplo redis
(integer) 1
redis 127.0.0.1:6379> sadd ejemplo mongodb
(integer) 1
redis 127.0.0.1:6379> sadd ejemplo rabbitmq
(integer) 1
redis 127.0.0.1:6379> sadd ejemplo rabbitmq
(integer) 0
redis 127.0.0.1:6379> smembers ejemplo

1) "redis"
2) "rabbitmq"
3) "mongodb"

Nota:En el ejemplo anterior, rabbitmq se agregó dos veces, pero debido a la unicidad de los elementos en el conjunto, el segundo elemento insertado se ignorará.

El número máximo de miembros en el conjunto es 232- 1 (4294967295, cada conjunto puede almacenar más de 4 mil millones de miembros).


zset (sorted set: conjunto ordenado)

El zset de Redis, al igual que set, es un conjunto de elementos de tipo string y no permite miembros duplicados.

La diferencia es que cada elemento está asociado a una puntuación de tipo double. Redis ordena los miembros del conjunto de menor a mayor precisamente mediante la puntuación.

Los miembros del zset son únicos, pero las puntuaciones (score) pueden repetirse.

Comandos comunes

  • ZADD key score value: Agrega uno o más miembros al conjunto ordenado, o actualiza la puntuación de los miembros existentes.
  • ZRANGE key start stop [WITHSCORES]: Devuelve los miembros dentro del rango especificado.
  • ZREM key value: Elimina uno o más miembros del conjunto ordenado.
  • ZSCORE key value: Devuelve el valor de puntuación de los miembros en el conjunto ordenado.

Comando zadd

Agrega elementos al conjunto; si el elemento ya existe en el conjunto, actualiza su score correspondiente.

zadd key score member 

Ejemplo

redis 127.0.0.1:6379> DEL ejemplo
redis 127.0.0.1:6379> zadd ejemplo 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd ejemplo 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd ejemplo 0 rabbitmq
(integer) 1
redis 127.0.0.1:6379> zadd ejemplo 0 rabbitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE ejemplo 0 1000
1) "mongodb"
2) "rabbitmq"
3) "redis"

Otros tipos de datos avanzados

HyperLogLog

  • Estructura de datos para algoritmos de estimación de cardinalidad.
  • Se utiliza comúnmente para estimar valores aproximados de elementos únicos.

Bitmaps

  • Arreglo de bits, puede realizar operaciones de bits en cadenas.
  • Se utiliza comúnmente para implementar operaciones de bits como filtros de Bloom.

Geospatial Indexes

  • Maneja datos geoespaciales, admite índices geoespaciales y consultas de radio.
    • Streams

      • Tipo de datos de registro, admite datos de series temporales.
      • Se utiliza para colas de mensajes y procesamiento de datos en tiempo real.
      Otras extensiones