Apoio JSON em Redis

Apoio JSON em Redis

Redis expande seus recursos existentes com suporte avançado ao módulo. Ele usa o módulo Redisjson para fornecer o suporte JSON em bancos de dados Redis. O módulo Redisjson fornece uma interface para ler, salvar e atualizar os documentos JSON com facilidade.

Redisjson 2.0 fornece uma API interna e pública que pode ser consumida por outros módulos que residem no mesmo nó redis. Dá a capacidade de os módulos como o Redisearch interagirem com o módulo Redisjson. Com esses recursos, o banco de dados Redis pode ser usado como um poderoso banco de dados orientado a documentos como o MongoDBB.

Redisjson ainda não possui os recursos de indexação como banco de dados de documentos. Vamos dar uma rápida olhada em como Redis fornece indexação para documentos JSON.

Indexação de suporte para documentos JSON

Um dos principais problemas de Redisjson é que não vem com mecanismos de indexação embutidos. Redis tem que apoiar a indexação com a ajuda de outros módulos. Felizmente, o módulo Redisearch já está lá que fornece ferramentas de indexação e pesquisa para hashes redis. Portanto, Redis lançou o Redisearch 2.2 que suporta indexação para dados JSON baseados em documentos. Tornou -se bastante fácil com a API público interna de Redisjson. Com o esforço combinado dos módulos Redisjson e Redisearch, o banco de dados Redis pode armazenar e indexar os dados JSON, e os consumidores podem localizar os documentos JSON, consultando o conteúdo que faz do Redis um banco de dados de altamente executado orientado a documentos.

Crie um índice com o RedisEarch

Roubo.Create Command é usado para criar um índice usando o RedisEarch. A palavra -chave ON JSON deve ser usada junto com o FT.Crie comando para informar Redis que os documentos JSON existentes ou recém -criados precisam ser indexados. Desde que Redisjson suporta JSONPATH (da versão 2.0), a parte do esquema deste comando pode ser definida usando as expressões JSONPATH. A sintaxe a seguir é usada para criar um índice JSON para documentos JSON no Redis Data Store.

Sintaxe:

Ft.Criar name_of_index no schema json jsonpath_expression como [attribute_name] data_type

Quando você mapeia os elementos JSON para os campos de esquema, é necessário usar os tipos de campo de esquema relevantes, como mostrado no seguinte:

JSON Document Element Tipo de campo de esquema
Cordas Texto, geo, tag
Números NUMÉRICO
boleano MARCAÇÃO
Matriz de números (JSON Array) Numérico, vetor
Matriz de cordas (JSON Array) Tag, texto
Array de coordenadas geográficas (JSON Array) Geo

Além disso, os valores do elemento nulo e os valores nulos em uma matriz são ignorados. Além disso, não é possível indexar os objetos JSON com o RedisEarch. Em tais situações, use cada elemento do objeto JSON como um atributo separado e indexá -los.

O processo de indexação é executado de forma assíncrona para os documentos JSON existentes e os documentos recém -criados ou modificados são indexados de forma síncrona no final do comando "Criar" ou "Atualizar".

Na seção a seguir, vamos discutir como adicionar um novo documento JSON ao seu Redis Data Store.

Crie um documento JSON com Redisjson

O módulo Redisjson fornece o JSON.Set e JSON.Arrapênd comandos para criar e modificar os documentos JSON.

Sintaxe:

JSON.DEFINIR $

Caso de uso - indexando os documentos JSON que contêm os dados do funcionário

Neste exemplo, criaremos três documentos JSON que mantêm os dados do funcionário para a empresa ABC. Em seguida, esses documentos são indexados usando o RedisEarch. Finalmente, um determinado documento é consultado usando o índice recém -criado.

Antes de criar os documentos e índices JSON em Redis, os módulos Redisjson e Redisearch devem ser instalados. Existem algumas abordagens a serem usadas:

  • Redis Stack vem com módulos Redisjson e Redisearch que já estão instalados. Você pode usar a imagem Redis Stack Docker para aumentar e executar um banco de dados Redis que consiste nesses dois módulos.
  • Instale o Redis 6.x ou versão posterior. Em seguida, instale o Redisjson 2.0 ou uma versão posterior junto com o Redisearch 2.2 ou uma versão posterior.

Usamos a pilha Redis para executar um banco de dados Redis com módulos Redisjson e RedisEarch.

Etapa 1: Configure a pilha Redis

Vamos executar o comando Docker a seguir para baixar a imagem mais recente do Redis-Stack Docker e iniciar um banco de dados Redis dentro de um contêiner do Docker:

UDO Docker Run -D -Name Redis -Stack -Latest -P 6379: 6379 -P 8001: 8001 Redis/Redis Stack: mais recente

Atribuímos o nome do contêiner, Redis-Stack-Latest. Além disso, a porta interna do contêiner 6379 é mapeado para a porta da máquina local 8001 também. O Redis/Redis Stack: mais recente A imagem é usada.

Saída:

Em seguida, executamos o Redis-Cli contra o banco de dados de contêineres Redis em execução da seguinte maneira:

Sudo Docker Exec-It Redis-Stack-Latest Redis-Cli

Saída:

Como esperado, o prompt Redis CLI começa. Além disso, você pode digitar o seguinte URL no navegador e verificar se a pilha Redis está em execução:

Localhost: 8001

Saída:

Etapa 2: Crie um índice

Antes de criar um índice, você precisa saber como são os elementos e a estrutura do seu documento JSON. No nosso caso, a estrutura do documento JSON se parece com o seguinte:


"Nome": "John Derek",
"Salário": "198890",

Indexamos o atributo de nome de cada documento JSON. O seguinte comando Redisearch é usado para criar o índice:

Ft.Crie EmpNameIdx no JSON Schema $.Nome como texto em nome do nome

Saída:

Desde que a Redisearch suporta expressões JSONPATH da versão 2.2, você pode definir o esquema usando as expressões jsonpath como no comando anterior.

$.nome

OBSERVAÇÃO: Você pode especificar vários atributos em um único FT.Crie comando como mostrado no seguinte:

Ft.Crie EMPIDX no JSON Schema $.Nome como Employeeename Text $.Salário como funcionário numérico

Etapa 3: Adicione documentos JSON

Vamos adicionar três documentos JSON usando o JSON.Defina o comando da seguinte maneira. Como o índice já está criado, o processo de indexação é síncrono nessa situação. Os documentos JSON recém -adicionados estão imediatamente disponíveis no índice:

JSON.Set Emp: 1 $ '"Nome": "Harris Rauf", "Salário": 10000'
JSON.Set Emp: 2 $ '"Nome": "Mark Wood", "Salário": 34000'
JSON.Set Emp: 3 $ '"Nome": "Mary Jane", "Salário": 23000'

Saída:

Para saber mais sobre a manipulação dos documentos JSON com Redisjson, dê uma olhada aqui.

Etapa 4: Consulte os dados do funcionário usando o índice

Como você já criou o índice, os documentos JSON criados anteriormente já devem estar disponíveis no índice. Roubo.O comando de pesquisa pode ser usado para pesquisar qualquer atributo que seja definido no empnameidx esquema.

Vamos procurar o documento JSON que contém a palavra "marca" no nome atributo.

Ft.Pesquise EmpNameidx '@employame: mark'

Você também pode usar o seguinte comando:

Ft.Pesquise EmpNameIdx '@employame: (Mark)'

Saída:

Como esperado, o documento JSON é armazenado na chave. EMP: 2 é devolvido.

Vamos adicionar um novo documento JSON e verificar se ele é indexado corretamente. O json.O comando set é usado da seguinte maneira:

JSON.Set Emp: 4 $ '"Nome": "Mary Nickolas", "Salário": 56000'

Saída:

Podemos recuperar o documento JSON adicionado usando o JSON.Obtenha comando o seguinte:

JSON.Obtenha EMP: 4 $

OBSERVAÇÃO: A sintaxe do JSON.Get Command é o seguinte:

JSON.PEGAR $

Saída:

Vamos correr o FT.Comando de pesquisa para pesquisar o (s) documento (s) que contém a palavra "Mary" no nome atributo de json.

Ft.Pesquisar empnameidx '@employame: Mary'

Saída:

Desde que recebemos dois documentos JSON que contêm a palavra Mary no nome atributo, dois documentos são devolvidos.

Existem várias maneiras de fazer sua pesquisa e criação de índices usando o módulo Redisearch e essas são discutidas no outro artigo. Este guia se concentra principalmente em fornecer uma visão geral de alto nível e compreensão da indexação de documentos JSON em Redis usando módulos RedisEarch e Redisjson.

Conclusão

Este guia explica o quão poderosa a indexação Redis é onde você pode consultar ou procurar os dados JSON com base em seu conteúdo com baixa latência.

Siga os links a seguir para obter mais detalhes sobre os módulos Redisjson e Redisearch:

  • Redisjson: https: // redis.io/docs/pilha/json/
  • Redisearch: https: // redis.io/docs/pilha/pesquisa/