ventajas valor usar trae sintaxis requerimientos rendimiento que por número desventajas defecto datos como clave bases sql redis nosql

valor - ¿Diseña la tabla de base de datos de Redis como SQL?



requerimientos de redis (5)

Redis, al igual que otras áreas de almacenamiento de datos NoSQL, tiene requisitos diferentes en función de lo que va a hacer.

Redis tiene varias estructuras de datos que podrían ser útiles según su necesidad. Por ejemplo, dado su deseo de select * from student where name = ''xxx'' , podría usar un hash Redis.

redis 127.0.0.1:6379> hmset xxx id 1 college nnn address xn OK redis 127.0.0.1:6379> hgetall xxx 1) "id" 2) "1" 3) "college" 4) "nnn" 5) "address" 6) "xn"

Sin embargo, si tiene otras consultas, como si quisiera hacer lo mismo pero seleccione where college = ''xn'' , tendrá que desnormalizar sus datos. La desnormalización suele ser algo malo en SQL, pero en NoSQL es muy común.

Si su consulta principal va en contra del nombre, pero es posible que deba realizar una consulta en contra de la universidad, entonces puede hacer algo como agregar un set además de los hash.

redis 127.0.0.1:6379> sadd college.xn xxx (integer) 1 redis 127.0.0.1:6379> smembers college.xn 1) "xxx"

Con sus datos estructurados de esta manera, si desea encontrar toda la información para los nombres que van a la universidad xn, primero debe seleccionar el set , luego seleccionar cada hash según el nombre devuelto en el set .

Sus requisitos generalmente conducirán el diseño y las estructuras que usa.

Supongamos que la estructura de mi tabla de base de datos es así

id name college address 1 xxx nnn xn 2 yyy nnm yn 3 zzz nnz zn

Si quiero obtener los detalles del estudiante en base al nombre en sql como este, seleccione * del estudiante donde name = ''xxx'' entonces, ¿cómo es posible en la base de datos redis


Redis solo tiene algunas estructuras básicas de datos, NoSQL y SQL son mundos diferentes. Pero puede usar Redis como un almacén de datos SQL planificado. Hay un divertido programa Redisql en github que intenta jugar con Redis a través de SQL, y la idea detrás de Redisql es tal que mencionó @sberry.


Para plain, redis vainilla, las otras respuestas son completamente correctas, sin embargo, ayer (02 - diciembre - 2016) redis 4-rc1 ha sido lanzado.

redis v4 proporciona soporte para módulos y acabo de escribir un pequeño módulo para incrustar SQLite en redis; rediSQL .

Con ese módulo, puedes usar una base de datos SQL completamente funcional dentro de tu redis instace.


Puedes probar el framework de búsqueda . searchbox proporciona una manera fácil de consultar datos redis con su API de Criteria.


Con solo 6 principios (que recopilé aquí ), es muy fácil para una persona con mentalidad SQL adaptarse al enfoque de Redis. En resumen, son:

  1. Lo más importante es que no tengas miedo de generar muchos pares clave-valor. Así que siéntete libre de almacenar cada fila de la tabla con una clave diferente.
  2. Usar el tipo de datos del mapa hash de Redis
  3. Nombre de clave de formulario de los valores de clave primaria de la tabla por un separador (como ":")
  4. Almacene los campos restantes como un hash
  5. Cuando desee consultar una sola fila, forme directamente la clave y recupere sus resultados
  6. Cuando desee consultar un rango, use el carácter salvaje "*" para su clave.

El enlace simplemente da un ejemplo de tabla simple y cómo modelarlo en Redis. Siguiendo esos 6 principios puede continuar pensando como lo hace para las tablas normales. (Por supuesto, sin algunos conceptos no tan relevantes como CRUD, restricciones, relaciones, etc.)