Redis expande sus características existentes con soporte de módulos avanzados. Utiliza el módulo redisjson para proporcionar el soporte JSON en bases de datos Redis. El módulo redisjson le brinda una interfaz para leer, guardar y actualizar los documentos JSON con facilidad.
Redisjson 2.0 proporciona una API interna y pública que puede ser consumida por cualquier otro módulo que reside en el mismo nodo Redis. Da la capacidad de los módulos como RedISearch para interactuar con el módulo Redisjson. Con estas capacidades, la base de datos Redis se puede utilizar como una potente base de datos orientada a documentos como MongoDB.
Redisjson todavía carece de las capacidades de indexación como una base de datos de documentos. Echemos un vistazo rápido a cómo Redis proporciona indexación para los documentos JSON.
Soporte de indexación para documentos JSON
Uno de los principales problemas de Redisjson es que no viene con mecanismos de indexación incorporados. Redis tiene que admitir la indexación con la ayuda de otros módulos. Afortunadamente, el módulo RedISearch ya está allí que proporciona herramientas de indexación y búsqueda de hashes Redis. Por lo tanto, Redis lanzó el RedISearch 2.2 que admite la indexación para los datos JSON basados en documentos. Se volvió bastante fácil con la API pública interna de Redisjson. Con el esfuerzo combinado de los módulos Redisjson y RedISearch, la base de datos de Redis puede almacenar e indexar los datos JSON, y los consumidores pueden localizar los documentos JSON consultando el contenido que hace que Redis sea una base de datos de altamente realizada por documentos.
Crear un índice con redisearch
Robo.Crear comando se usa para crear un índice usando redisearch. La palabra clave ON JSON debe usarse junto con el FT.Crear comando para informar a Redis que los documentos JSON existentes o recién creados deben indexarse. Dado que Redisjson admite JsonPath (de la versión 2.0), la parte del esquema de este comando se puede definir utilizando las expresiones JSONPATH. La siguiente sintaxis se utiliza para crear un índice JSON para documentos JSON en el almacén de datos de Redis.
Sintaxis:
PIE.Crear name_of_index en JSON Schema jsonpath_expression como [attribute_name] data_type
Cuando asigna los elementos JSON a los campos de esquema, es imprescindible usar los tipos de campo de esquema relevantes como se muestra en lo siguiente:
Elemento de documento JSON | Tipo de campo de esquema |
Instrumentos de cuerda | Texto, geo, etiqueta |
Números | NUMÉRICO |
Booleano | ETIQUETA |
Matriz de números (matriz JSON) | Numérico, vector |
Malla de cuerdas (matriz JSON) | Etiqueta, texto |
Mango de coordenadas geográficas (matriz JSON) | GEO |
Además, se ignoran los valores de elementos nulos y los valores nulos en una matriz. Además, no es posible indexar los objetos JSON con redisearch. En tales situaciones, use cada elemento del objeto JSON como un atributo separado e indexe.
El proceso de indexación se ejecuta asíncronamente para los documentos JSON existentes y los documentos recién creados o modificados se indexan sincrónicamente al final del comando "Crear" o "Actualizar".
En la siguiente sección, analicemos cómo agregar un nuevo documento JSON a su almacén de datos Redis.
Crea un documento JSON con Redisjson
El módulo Redisjson proporciona el JSON.Set y json.ArrpApend comandos para crear y modificar los documentos JSON.
Sintaxis:
Json.COLOCARps
Caso de uso: indexando los documentos JSON que contienen los datos de los empleados
En este ejemplo, crearemos tres documentos JSON que contengan los datos de los empleados para la compañía ABC. A continuación, esos documentos se indexan utilizando RedISearch. Finalmente, se consulta un documento determinado utilizando el índice recién creado.
Antes de crear los documentos e índices JSON en Redis, se deben instalar los módulos Redisjson y RedISearch. Hay un par de enfoques para usar:
Utilizamos la pila Redis para ejecutar una base de datos Redis con los módulos Redisjson y RedISearch.
Paso 1: Configure la pila Redis
Ejecutemos el siguiente comando Docker para descargar la última imagen de Docker Redis-Stack e iniciar una base de datos Redis dentro de un contenedor Docker:
Udo Docker Run -d -Name Redis -Stack -Latest -P 6379: 6379 -P 8001: 8001 Redis/Redis -Stack: Último
Asignamos el nombre del contenedor, Redis-stack-latest. Además, el puerto de contenedor interno 6379 se asigna al puerto de máquina local 8001 también. El Redis/Redis-Stack: Último Se usa la imagen.
Producción:
A continuación, ejecutamos el Redis-Cli contra la base de datos de contenedores Redis Redis de la siguiente manera:
Sudo Docker Exec -it Redis-Stack-Latest Redis-Cli
Producción:
Como se esperaba, el aviso de Redis CLI comienza. Además, puede escribir la siguiente URL en el navegador y verificar si la pila Redis se está ejecutando:
Localhost: 8001
Producción:
Paso 2: crear un índice
Antes de crear un índice, debe saber cómo se ven los elementos y la estructura de sus documentos JSON. En nuestro caso, la estructura del documento JSON se parece a la siguiente:
"Nombre": "John Derek",
"Salario": "198890",
Indexamos el atributo de nombre de cada documento JSON. El siguiente comando redisearch se usa para crear el índice:
PIE.Crear empnameIdx en JSON SCHEMA $.Nombre como texto de juego de empleo
Producción:
Dado que RedISearch admite expresiones JSONPath de la versión 2.2, puede definir el esquema utilizando las expresiones JSONPath como en el comando anterior.
ps.nombre
NOTA: Puede especificar múltiples atributos en un solo FT.Crear comando como se muestra en el siguiente:
PIE.Crear Empidx en JSON Schema $.Nombre como EmpacationEename Text $.salario como empleados numéricos
Paso 3: Agregar documentos JSON
Agreguemos tres documentos JSON usando el JSON.Establecer el comando de la siguiente manera. Dado que el índice ya está creado, el proceso de indexación es sincrónico en esta situación. Los documentos JSON recién agregados están disponibles de inmediato en el índice:
Json.Establecer emp: 1 $ '"nombre": "Harris rauf", "Salario": 10000'
Json.Establecer EMP: 2 $ '"Nombre": "Mark Wood", "Salario": 34000'
Json.Establecer EMP: 3 $ '"Nombre": "Mary Jane", "Salario": 23000'
Producción:
Para saber más sobre la manipulación de los documentos JSON con Redisjson, eche un vistazo aquí.
Paso 4: consulte los datos del empleado utilizando el índice
Dado que ya creó el índice, los documentos JSON anteriormente creados ya deberían estar disponibles en el índice. Robo.El comando de búsqueda se puede usar para buscar cualquier atributo que se define en el empnameidx esquema.
Busquemos el documento JSON que contiene la palabra "marca" en el nombre atributo.
PIE.Buscar empnameIdx '@EmployEename: Mark'
También puede usar el siguiente comando:
PIE.Buscar empnameIdx '@EmployEename: (Mark)'
Producción:
Como se esperaba, el documento JSON se almacena en la clave. EMP: 2 es regresado.
Agreguemos un documento JSON y verifiquemos si está indexado correctamente. El json.El comando set se usa de la siguiente manera:
Json.Establecer EMP: 4 $ '"Nombre": "Mary Nickolas", "Salario": 56000'
Producción:
Podemos recuperar el documento JSON agregado usando el JSON.Obtenga el comando de la siguiente manera:
Json.Get EMP: 4 $
NOTA: La sintaxis del json.Get Command es el siguiente:
Json.CONSEGUIRps
Producción:
Ejecutemos el FT.Comando de búsqueda para buscar los documentos que contengan la palabra "María" en el nombre Atributo de JSON.
PIE.Buscar empnameIdx '@EmployEename: Mary'
Producción:
Desde que obtuvimos dos documentos JSON que contienen la palabra María en el nombre atributo, se devuelven dos documentos.
Hay varias formas de hacer su búsqueda y creación de índice utilizando el módulo RedISearch y esas se discuten en el otro artículo. Esta guía se centra principalmente en dar una visión general de alto nivel y una comprensión de la indexación de documentos JSON en Redis utilizando módulos RedISEARCH y REDISJSON.
Conclusión
Esta guía explica cuán poderosa es la indexación de Redis donde puede consultar o buscar los datos JSON en función de su contenido con baja latencia.
Siga los siguientes enlaces para obtener más detalles sobre los módulos RedisJson y RedISearch: