¿Diseña la tabla de database de Redis como SQL?

Supongamos que la estructura de mi tabla de database es así

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

Si quiero get los detalles del estudiante en base al nombre en sql como este, select * del estudiante donde name = 'xxx' entonces, ¿cómo es posible en la database networkingis

Redis, al igual que otras áreas de almacenamiento de datos NoSQL, tiene requisitos diferentes en function 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.

 networkingis 127.0.0.1:6379> hmset xxx id 1 college nnn address xn OK networkingis 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 select 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.

 networkingis 127.0.0.1:6379> sadd college.xn xxx (integer) 1 networkingis 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 layout y las estructuras que usa.

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

  1. Lo más importante es que no tengas miedo de generar muchos pares key-valor. Así que siéntete libre de almacenar cada fila de la tabla con una key diferente.
  2. Usar el tipo de datos del map hash de Redis
  3. Nombre de key de formulario de los valores de key 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 key y recupere sus resultados
  6. Cuando desee consultar un range, use el carácter salvaje "*" para su key.

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.)

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

networkingis v4 proporciona soporte para modules y acabo de escribir un pequeño module para incrustar SQLite en networkingis; networkingiSQL .

Con ese module, puedes usar una database SQL completamente funcional dentro de tu networkingis instace.

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 progtwig 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.

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