Redis almacena claves que apuntan a valores. Las claves pueden tener cualquier valor binario hasta un tamaño razonable (se recomienda el uso de cadenas ASCII cortas para fines de lectura y depuración). Los valores son uno de los cinco tipos de datos nativos de Redis.
1.cadenas: una secuencia de bytes seguros binarios de hasta 512 MB
2.hashes: una colección de pares de valores clave
3.listas: una colección de cadenas en orden de inserción
4.sets: una colección de cadenas únicas sin ordenar
5.conjuntos clasificados: una colección de cadenas únicas ordenadas por puntuación definida por el usuario
Instrumentos de cuerda
Una cadena Redis es una secuencia de bytes.
Las cadenas en Redis son binarias seguras (lo que significa que tienen una longitud conocida no determinada por ningún carácter especial de terminación), por lo que puede almacenar cualquier cosa hasta 512 megabytes en una cadena.
Las cadenas son el concepto canónico de "almacén de valores clave". Tiene una clave que apunta a un valor, donde clave y valor son cadenas de texto o binarias.
Para todas las operaciones posibles en cadenas, consulte
http://redis.io/commands/#string
Hashes
Un hash de Redis es una colección de pares de valores clave.
Un hash de Redis contiene muchos pares de valores clave, donde cada clave y valor es una cadena. Los hash de Redis no admiten valores complejos directamente (es decir, no puede tener un campo hash que tenga un valor de una lista o conjunto u otro hash), pero puede usar campos hash para apuntar a otros valores complejos de nivel superior. La única operación especial que puede realizar en valores de campo hash es el incremento / disminución atómica de contenido numérico.
Puede pensar en un hash de Redis de dos maneras: como una representación directa de objeto y como una forma de almacenar muchos valores pequeños de forma compacta.
Las representaciones directas de objetos son simples de entender. Los objetos tienen un nombre (la clave del hash) y una colección de claves internas con valores. Vea el siguiente ejemplo para, bueno, un ejemplo.
Almacenar muchos valores pequeños utilizando un hash es una técnica inteligente de almacenamiento masivo de datos de Redis. Cuando un hash tiene una pequeña cantidad de campos (~ 100), Redis optimiza la eficiencia de almacenamiento y acceso de todo el hash. La pequeña optimización de almacenamiento de hash de Redis plantea un comportamiento interesante: es más eficiente tener 100 hash cada uno con 100 claves y valores internos en lugar de tener 10,000 claves de nivel superior que apuntan a valores de cadena. El uso de hashes de Redis para optimizar su almacenamiento de datos de esta manera requiere una sobrecarga de programación adicional para rastrear dónde terminan los datos, pero si su almacenamiento de datos se basa principalmente en cadenas, puede ahorrar mucha sobrecarga de memoria con este truco extraño.
Para todas las operaciones posibles en hash, vea los documentos hash
Liza
Las listas de Redis actúan como listas vinculadas.
Puede insertar, eliminar y recorrer listas desde el encabezado o el final de una lista.
Use listas cuando necesite mantener los valores en el orden en que se insertaron. (Redis le da la opción de insertar en cualquier posición de lista arbitraria si lo necesita, pero su rendimiento de inserción se degradará si inserta lejos de su posición inicial).
Las listas de Redis a menudo se usan como colas de productor / consumidor. Inserte elementos en una lista y luego extraiga elementos de la lista. ¿Qué sucede si sus consumidores intentan salir de una lista sin elementos? Puede pedirle a Redis que espere a que aparezca un elemento y que se lo devuelva inmediatamente cuando se agregue. Esto convierte a Redis en un sistema de cola / evento / trabajo / tarea / notificación en tiempo real.
Puede eliminar atómicamente elementos de cualquier extremo de una lista, permitiendo que cualquier lista sea tratada como una pila o una cola.
También puede mantener listas de longitud fija (colecciones con límite) recortando su lista a un tamaño específico después de cada inserción.
Para todas las operaciones posibles en las listas, consulte los documentos de listas
Conjuntos
Los conjuntos de Redis son, bueno, conjuntos.
Un conjunto de Redis contiene cadenas de Redis desordenadas únicas donde cada cadena solo existe una vez por conjunto. Si agrega el mismo elemento diez veces a un conjunto, solo aparecerá una vez. Los conjuntos son excelentes para garantizar perezosamente que algo existe al menos una vez sin preocuparse por la acumulación de elementos duplicados y el desperdicio de espacio. Puede agregar la misma cadena tantas veces como desee sin necesidad de verificar si ya existe.
Los conjuntos son rápidos para la verificación de membresía, inserción y eliminación de miembros en el conjunto.
Los conjuntos tienen operaciones de conjuntos eficientes, como era de esperar. Puede tomar la unión, la intersección y la diferencia de varios conjuntos a la vez. Los resultados pueden devolverse a la persona que llama o pueden almacenarse en un nuevo conjunto para su uso posterior.
Los conjuntos tienen acceso de tiempo constante para las comprobaciones de membresía (a diferencia de las listas), y Redis incluso tiene conveniente eliminación y devolución de miembros aleatorios ("pop un elemento aleatorio del conjunto") o miembros aleatorios que regresan sin reemplazo ("deme 30 usuarios únicos aleatorios ") o con reemplazo (" deme 7 tarjetas, pero después de cada selección, vuelva a colocar la tarjeta para que pueda volver a muestrearse ").
Para todas las operaciones posibles en conjuntos, consulte los documentos de conjuntos .
Conjuntos ordenados
Los conjuntos ordenados de Redis son conjuntos con un orden definido por el usuario.
Para simplificar, puede pensar en un conjunto ordenado como un árbol binario con elementos únicos. (Los conjuntos ordenados de Redis son en realidad listas de omisión ). El orden de clasificación de los elementos está definido por la puntuación de cada elemento.
Los conjuntos ordenados siguen siendo conjuntos. Los elementos solo pueden aparecer una vez en un conjunto. Un elemento, para propósitos de unicidad, se define por su contenido de cadena. Insertar el elemento "manzana" con la puntuación de clasificación 3, luego insertar el elemento "manzana" con la puntuación de clasificación 500 da como resultado un elemento "manzana" con la puntuación de clasificación 500 en su conjunto ordenado. Los conjuntos solo son únicos según los datos, no según los pares (puntuación, datos).
Asegúrese de que su modelo de datos se base en el contenido de la cadena y no en la puntuación del elemento por su singularidad. Las puntuaciones se pueden repetir (o incluso cero), pero, por última vez, los elementos del conjunto solo pueden existir una vez por conjunto ordenado. Por ejemplo, si intenta almacenar el historial de cada inicio de sesión de usuario como un conjunto ordenado haciendo que la puntuación sea la época del inicio de sesión y el valor de la identificación del usuario, terminará almacenando solo la última época de inicio de sesión para todos sus usuarios. Su conjunto crecería al tamaño de su base de usuarios y no al tamaño deseado de los inicios de sesión de la base de usuarios *.
Los elementos se agregan a su conjunto con puntajes. Puede actualizar el puntaje de cualquier elemento en cualquier momento, simplemente agregue el elemento nuevamente con un nuevo puntaje. Las puntuaciones se representan mediante dobles puntos de coma flotante, por lo que puede especificar la granularidad de las marcas de tiempo de alta precisión si es necesario. Varios elementos pueden tener el mismo puntaje.
Puede recuperar elementos de diferentes maneras. Como todo está ordenado, puede solicitar elementos que comiencen con los puntajes más bajos. Puede solicitar elementos que comiencen con los puntajes más altos ("en reversa"). Puede solicitar elementos por su puntuación de clasificación, ya sea en orden natural o inverso.
Para todas las operaciones posibles en conjuntos ordenados, consulte los documentos de conjuntos ordenados.