Soporte JSON en Redis

Soporte JSON en Redis

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.COLOCAR ps

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:

  • Redis Stack viene con módulos Redisjson y RedISearch que ya están instalados. Puede usar la imagen Redis Stack Docker para subir y ejecutar una base de datos Redis que consiste en esos dos módulos.
  • Instale el Redis 6.Versión X o posterior. Luego, instale el Redisjson 2.0 o una versión posterior junto con RedISearch 2.2 o una versión posterior.

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.CONSEGUIR ps

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:

  • Redisjson: https: // Redis.io/docs/stack/json/
  • RedISearch: https: // redis.IO/Docs/Stack/Search/