Una revisión de los cinco objetos principales de Redis (tipos de datos) Una revisión de los cinco objetos principales de Redis (tipos de datos)

Extracto de: https://www.cnblogs.com/hunternet/p/12742390.html

Un artículo que revisa los cinco objetos principales de Redis (tipos de datos)

 


Categoría:  Redis  Etiquetas:  Redis

Redis es una base de datos en memoria distribuida de alto rendimiento, que se utiliza ampliamente en las principales empresas de Internet en el país y en el extranjero. Incluso algunas empresas que no son de Internet tienen escenarios de aplicación muy importantes, por lo que el dominio de Redis también se ha convertido en el back-end. Las habilidades básicas necesarias para los ingenieros.En las entrevistas, Redis ha sido durante mucho tiempo un tema del que a menudo se habla, y en el trabajo real, debemos tratar con Redis en todo momento. ¡Por lo tanto, es muy importante dominar los diversos trucos de artes marciales de la pila de tecnología Redis!

Redis proporciona cinco objetos principales (tipos de datos) para que los desarrolladores los usen, lo que proporciona funciones potentes y prácticas. Sin embargo, en el desarrollo real, la mayoría de los desarrolladores simplemente usan Redis String Get and Set. Esto es como las dieciocho palmas del dragón, solo aprendiste una palma. En el combate real contra el enemigo, ¡es inevitablemente un poco delgado! En este artículo, revisaremos los cinco objetos principales de Redis, para que podamos lograr realmente la facilidad en el combate real.

Primero, la cadena (después de todo, llevé todo) #

El tipo de cadena es la estructura de datos más básica de Redis. Varias otras estructuras de datos se crean en función del tipo de cadena. El valor del tipo de cadena es una cadena (cadena simple, cadena compleja (como JSON, XML)), número (entero, coma flotante) o incluso binario (imagen, audio, video), etc.

objeto de cadena intra-codificado tres tipos: int, rawy embstr. Redis decidirá qué codificación utilizar en función del tipo y la longitud del valor actual.

  • int: si un objeto de cadena contiene un valor entero, y el valor entero se longpuede representar por tipo
  • sin formato: si el objeto de cadena contiene un valor de cadena y la longitud del valor de la cadena es mayor que 32 bytes
  • embstr: si el objeto de cadena contiene un valor de cadena y la longitud del valor de la aplicación de caracteres es menor o igual a 32 bytes

 Los escenarios de uso de cadenas de reids son los más extensos. Incluso algunas personas que no están familiarizadas con varios otros objetos de redis, básicamente todos los escenarios usarán cadenas (serializarlos y lanzarlos directamente). Debido al peso que no debería soportar a esta edad. De hecho, los principales escenarios de uso de Redis son principalmente los siguientes:

  1. Como capa de caché, caché de datos calientes
  2. La cadena Redis puede aumentar y disminuir automáticamente, y puede usarse como contador, limitador de velocidad y generación de ID incremental.
  3. Compartir sesiones en sistemas distribuidos
  4. Almacenamiento de datos binarios

Para una introducción más detallada a las cadenas de Redis, puede consultar este artículo mío.

Redis cadena de objetos

Segundo, hash (también puedo almacenar objetos) #

Los objetos hash se utilizan para almacenar un conjunto de pares de datos. Cada par de datos contiene dos partes: clave y valor.

Redis-Hash

También hay dos formas de implementar objetos hash. ziplist (lista comprimida) , tabla hash (tabla hash)

Del mismo modo, Redis utiliza listas comprimidas para implementar objetos hash solo cuando la cantidad de datos almacenados es relativamente pequeña. Hay dos requisitos específicos:

  • El tamaño de las claves y los valores almacenados en el diccionario debe ser inferior a 64 bytes;
  • El número de pares clave-valor en el diccionario debe ser inferior a 512.

Cuando las dos condiciones anteriores no se pueden cumplir al mismo tiempo, Redis usa una tabla hash para implementar el objeto hash.

Cuando el contenido almacenado es un objeto, muchas funciones de los objetos de cadena de Redis también se pueden implementar utilizando objetos hash de Redis. Por ejemplo, al almacenar en caché la información del usuario, el uso del almacenamiento de objetos hash de Redis es simple e intuitivo. Si se usa de manera razonable, puede reducir el uso de espacio en la memoria. Pero también tiene sus desventajas, es decir, es necesario controlar la conversión de hashes en las dos codificaciones internas de ziplist y hashtable, que consumirán más memoria.

Además, los objetos hash de Redis también pueden implementar funciones como carros de compras y mostradores.

Para una introducción más detallada a los objetos hash de Redis, puede consultar mi artículo.

Redis object-Hash

Tres, lista (puedo hacer tanto stack como cola) #

Los objetos como las listas admiten el almacenamiento de un conjunto ordenado de datos no repetidos. Debido a su orden, puede obtener una lista de elementos en un rango específico, y puede obtener elementos con un subíndice de índice especificado en O (1) complejidad de tiempo.

Antes de Redis 3.2, había dos tipos de codificaciones internas para el tipo de lista. Cuando se cumplen las dos condiciones siguientes, los objetos de la lista de Redis se implementan usando ziplist (lista comprimida).

  • Cuando el número de elementos en la lista es menor que la configuración list-max-ziplist-entries (512 por defecto)

  • Cuando el valor de cada elemento en la lista es menor que la configuración list-max-ziplist-value (valor predeterminado 64 bytes)

Cuando el tipo de lista no puede cumplir las condiciones de ziplist, Redis usará Linkedlist como la implementación interna de la lista.

En la versión Redis 3.2, la estructura de datos de la lista se ha modificado, utilizando la lista rápida en lugar de la lista zip y la lista vinculada.

Debido a la naturaleza ordenada y no repetible del objeto de lista, es más adecuado para almacenar listas como artículos y productos.

El tipo de lista puede ser lpush (presionar a la izquierda), y el primer elemento de rpop (presionar a la derecha) (consultar y eliminar) puede usarse al mismo tiempo, por lo que el tipo de lista tiene una función de primero en entrar, primero en salir y puede usarse para implementar colas de mensajes. También puede ser lpush (presionar a la izquierda) -> lpop (pop a la izquierda), que tiene la función de último en entrar, primero en salir, por lo que también podemos usar objetos de lista para implementar cuando necesitemos usar la pila en el desarrollo.
Para una introducción más detallada a los objetos de la lista de Redis, puede consultar mi artículo.

Redis lista de objetos

Cuarto, la colección (estoy en el sistema de etiquetas) #

Set object (Set) es un conjunto desordenado y único de valores clave. Su orden de almacenamiento no se almacenará en el orden de inserción. La diferencia con la lista es que los datos que almacena no están ordenados y no se repiten.

También hay dos codificaciones internas para objetos de colección: intset (conjunto de enteros) y tabla hash (tabla hash). El objeto de colección se implementa usando intset cuando se cumplen las siguientes dos condiciones.

  • Los elementos de la colección son todos enteros.
  • El número de elementos en la colección es menor que la configuración de set-maxintset-entries (512 por defecto)

Cuando no se cumplen las dos condiciones anteriores, el objeto de colección se implementa mediante tabla hash.

Las características principales del objeto de colección son que es desordenado, no repetible, soportes y cruces, por lo que puede usarse como un sistema de etiquetado.

La colección de  comandos SPOP (eliminar aleatoriamente y devolver uno o más elementos de la colección)  y  SRANDMEMBER (devolver aleatoriamente uno o más elementos de la colección)  pueden ayudarnos a implementar un sistema de lotería.

Para una introducción más detallada a los objetos de la colección Redis, puede consultar mi artículo.

Redis conjunto de objetos

Quinto, colección ordenada (mi nombre es el mejor) #

Tipo de conjunto ordenado (Conjunto ordenado o ZSet) En comparación con el tipo de conjunto, hay un puntaje de atributo de clasificación adicional (puntaje). Para un conjunto ordenado ZSet, cada elemento de almacenamiento es equivalente a dos valores, uno es El valor del elemento de la combinación de orden, uno es el valor de orden. Una colección ordenada conserva la característica de que una colección no puede tener miembros duplicados (las puntuaciones pueden repetirse), pero la diferencia es que los elementos de una colección ordenada pueden ordenarse.

El conjunto ordenado se compone de  ziplist (lista comprimida)  o  skiplist (lista de omisión)  .

Cuando los datos son relativamente pequeños, el conjunto ordenado se almacena usando ziplist, y el conjunto ordenado almacenado usando el formato ziplist debe cumplir las dos condiciones siguientes:

  • El número de elementos en un conjunto ordenado es inferior a 128;
  • La longitud de todos los miembros del elemento almacenados en un conjunto ordenado debe ser inferior a 64 bytes.

Si alguna de las dos condiciones anteriores no se puede cumplir, el conjunto ordenado se almacenará utilizando una estructura de lista de omisión.

Un caso de uso típico para conjuntos ordenados es un sistema de clasificación como la clasificación del rendimiento del estudiante. Me gusta de los usuarios, clasificaciones de juego, clasificaciones de ventas de productos en el sistema de comercio electrónico de un sitio web de video (blog, etc.), etc.

Para una introducción más detallada a los objetos de colección ordenados de Redis, puede consultar mi artículo.

Redis conjunto ordenado por objeto (ZSet)

Resumen #

Redis proporciona los cinco objetos más básicos y más utilizados (tipos de datos): String, Hash, List, Set, ZSet. Comprender estos cinco objetos nos ayuda a usar mejor Redis en el desarrollo diario. A través de este artículo, podemos ver que cada objeto se realiza mediante múltiples estructuras de datos, puede pensar por qué.

----- FIN ----- #

Autor:  mayores de `

Fuente: https://www.cnblogs.com/hunternet/p/12742390.html

Este sitio utiliza el acuerdo de intercambio creativo " CC BY 4.0 ". Indique el autor y la fuente en la posición obvia del artículo.

 

Cuenta pública de WeChat:

 

 
 
 
4 4
 
 
 
«  Anterior:  Conjunto ordenado por objetos de Redis (ZSet)

Redis es una base de datos en memoria distribuida de alto rendimiento, que se utiliza ampliamente en las principales empresas de Internet en el país y en el extranjero. Incluso algunas empresas que no son de Internet tienen escenarios de aplicación muy importantes, por lo que el dominio de Redis también se ha convertido en el back-end. Las habilidades básicas necesarias para los ingenieros.En las entrevistas, Redis ha sido durante mucho tiempo un tema del que a menudo se habla, y en el trabajo real, debemos tratar con Redis en todo momento. ¡Por lo tanto, es muy importante dominar los diversos trucos de artes marciales de la pila de tecnología Redis!

Redis proporciona cinco objetos principales (tipos de datos) para que los desarrolladores los usen, lo que proporciona funciones potentes y prácticas. Sin embargo, en el desarrollo real, la mayoría de los desarrolladores simplemente usan Redis String Get and Set. Esto es como las dieciocho palmas del dragón, solo aprendiste una palma. En el combate real contra el enemigo, ¡es inevitablemente un poco delgado! En este artículo, revisaremos los cinco objetos principales de Redis, para que podamos lograr realmente la facilidad en el combate real.

Primero, la cadena (después de todo, llevé todo) #

El tipo de cadena es la estructura de datos más básica de Redis. Varias otras estructuras de datos se crean en función del tipo de cadena. El valor del tipo de cadena es una cadena (cadena simple, cadena compleja (como JSON, XML)), número (entero, coma flotante) o incluso binario (imagen, audio, video), etc.

objeto de cadena intra-codificado tres tipos: int, rawy embstr. Redis decidirá qué codificación utilizar en función del tipo y la longitud del valor actual.

  • int: si un objeto de cadena contiene un valor entero, y el valor entero se longpuede representar por tipo
  • sin formato: si el objeto de cadena contiene un valor de cadena y la longitud del valor de la cadena es mayor que 32 bytes
  • embstr: si el objeto de cadena contiene un valor de cadena y la longitud del valor de la aplicación de caracteres es menor o igual a 32 bytes

 Los escenarios de uso de cadenas de reids son los más extensos. Incluso algunas personas que no están familiarizadas con varios otros objetos de redis, básicamente todos los escenarios usarán cadenas (serializarlos y lanzarlos directamente). Debido al peso que no debería soportar a esta edad. De hecho, los principales escenarios de uso de Redis son principalmente los siguientes:

  1. Como capa de caché, caché de datos calientes
  2. La cadena Redis puede aumentar y disminuir automáticamente, y puede usarse como contador, limitador de velocidad y generación de ID incremental.
  3. Compartir sesiones en sistemas distribuidos
  4. Almacenamiento de datos binarios

Para una introducción más detallada a las cadenas de Redis, puede consultar este artículo mío.

Redis cadena de objetos

Segundo, hash (también puedo almacenar objetos) #

Los objetos hash se utilizan para almacenar un conjunto de pares de datos. Cada par de datos contiene dos partes: clave y valor.

Redis-Hash

También hay dos formas de implementar objetos hash. ziplist (lista comprimida) , tabla hash (tabla hash)

Del mismo modo, Redis utiliza listas comprimidas para implementar objetos hash solo cuando la cantidad de datos almacenados es relativamente pequeña. Hay dos requisitos específicos:

  • El tamaño de las claves y los valores almacenados en el diccionario debe ser inferior a 64 bytes;
  • El número de pares clave-valor en el diccionario debe ser inferior a 512.

Cuando las dos condiciones anteriores no se pueden cumplir al mismo tiempo, Redis usa una tabla hash para implementar el objeto hash.

Cuando el contenido almacenado es un objeto, muchas funciones de los objetos de cadena de Redis también se pueden implementar utilizando objetos hash de Redis. Por ejemplo, al almacenar en caché la información del usuario, el uso del almacenamiento de objetos hash de Redis es simple e intuitivo. Si se usa de manera razonable, puede reducir el uso de espacio en la memoria. Pero también tiene sus desventajas, es decir, es necesario controlar la conversión de hashes en las dos codificaciones internas de ziplist y hashtable, que consumirán más memoria.

Además, los objetos hash de Redis también pueden implementar funciones como carros de compras y mostradores.

Para una introducción más detallada a los objetos hash de Redis, puede consultar mi artículo.

Redis object-Hash

Tres, lista (puedo hacer tanto stack como cola) #

Los objetos como las listas admiten el almacenamiento de un conjunto ordenado de datos no repetidos. Debido a su orden, puede obtener una lista de elementos en un rango específico, y puede obtener elementos con un subíndice de índice especificado en O (1) complejidad de tiempo.

Antes de Redis 3.2, había dos tipos de codificaciones internas para el tipo de lista. Cuando se cumplen las dos condiciones siguientes, los objetos de la lista de Redis se implementan usando ziplist (lista comprimida).

  • Cuando el número de elementos en la lista es menor que la configuración list-max-ziplist-entries (512 por defecto)

  • Cuando el valor de cada elemento en la lista es menor que la configuración list-max-ziplist-value (valor predeterminado 64 bytes)

Cuando el tipo de lista no puede cumplir las condiciones de ziplist, Redis usará Linkedlist como la implementación interna de la lista.

En la versión Redis 3.2, la estructura de datos de la lista se ha modificado, utilizando la lista rápida en lugar de la lista zip y la lista vinculada.

Debido a la naturaleza ordenada y no repetible del objeto de lista, es más adecuado para almacenar listas como artículos y productos.

El tipo de lista puede ser lpush (presionar a la izquierda), y el primer elemento de rpop (presionar a la derecha) (consultar y eliminar) puede usarse al mismo tiempo, por lo que el tipo de lista tiene una función de primero en entrar, primero en salir y puede usarse para implementar colas de mensajes. También puede ser lpush (presionar a la izquierda) -> lpop (pop a la izquierda), que tiene la función de último en entrar, primero en salir, por lo que también podemos usar objetos de lista para implementar cuando necesitemos usar la pila en el desarrollo.
Para una introducción más detallada a los objetos de la lista de Redis, puede consultar mi artículo.

Redis lista de objetos

Cuarto, la colección (estoy en el sistema de etiquetas) #

Set object (Set) es un conjunto desordenado y único de valores clave. Su orden de almacenamiento no se almacenará en el orden de inserción. La diferencia con la lista es que los datos que almacena no están ordenados y no se repiten.

También hay dos codificaciones internas para objetos de colección: intset (conjunto de enteros) y tabla hash (tabla hash). El objeto de colección se implementa usando intset cuando se cumplen las siguientes dos condiciones.

  • Los elementos de la colección son todos enteros.
  • El número de elementos en la colección es menor que la configuración de set-maxintset-entries (512 por defecto)

Cuando no se cumplen las dos condiciones anteriores, el objeto de colección se implementa mediante tabla hash.

Las características principales del objeto de colección son que es desordenado, no repetible, soportes y cruces, por lo que puede usarse como un sistema de etiquetado.

La colección de  comandos SPOP (eliminar aleatoriamente y devolver uno o más elementos de la colección)  y  SRANDMEMBER (devolver aleatoriamente uno o más elementos de la colección)  pueden ayudarnos a implementar un sistema de lotería.

Para una introducción más detallada a los objetos de la colección Redis, puede consultar mi artículo.

Redis conjunto de objetos

Quinto, colección ordenada (mi nombre es el mejor) #

Tipo de conjunto ordenado (Conjunto ordenado o ZSet) En comparación con el tipo de conjunto, hay un puntaje de atributo de clasificación adicional (puntaje). Para un conjunto ordenado ZSet, cada elemento de almacenamiento es equivalente a dos valores, uno es El valor del elemento de la combinación de orden, uno es el valor de orden. Una colección ordenada conserva la característica de que una colección no puede tener miembros duplicados (las puntuaciones pueden repetirse), pero la diferencia es que los elementos de una colección ordenada pueden ordenarse.

El conjunto ordenado se compone de  ziplist (lista comprimida)  o  skiplist (lista de omisión)  .

Cuando los datos son relativamente pequeños, el conjunto ordenado se almacena usando ziplist, y el conjunto ordenado almacenado usando el formato ziplist debe cumplir las dos condiciones siguientes:

  • El número de elementos en un conjunto ordenado es inferior a 128;
  • La longitud de todos los miembros del elemento almacenados en un conjunto ordenado debe ser inferior a 64 bytes.

Si alguna de las dos condiciones anteriores no se puede cumplir, el conjunto ordenado se almacenará utilizando una estructura de lista de omisión.

Un caso de uso típico para conjuntos ordenados es un sistema de clasificación como la clasificación del rendimiento del estudiante. Me gusta de los usuarios, clasificaciones de juego, clasificaciones de ventas de productos en el sistema de comercio electrónico de un sitio web de video (blog, etc.), etc.

Para una introducción más detallada a los objetos de colección ordenados de Redis, puede consultar mi artículo.

Redis conjunto ordenado por objeto (ZSet)

Resumen #

Redis proporciona los cinco objetos más básicos y más utilizados (tipos de datos): String, Hash, List, Set, ZSet. Comprender estos cinco objetos nos ayuda a usar mejor Redis en el desarrollo diario. A través de este artículo, podemos ver que cada objeto se realiza mediante múltiples estructuras de datos, puede pensar por qué.

----- FIN ----- #

Supongo que te gusta

Origin www.cnblogs.com/xichji/p/12751067.html
Recomendado
Clasificación