JSON -støtte i Redis

JSON -støtte i Redis

Redis utvider sine eksisterende funksjoner med avansert modulstøtte. Den bruker Redisjson -modulen for å gi JSON -støtten i Redis -databaser. Redisjson -modulen gir deg et grensesnitt for å lese, lagre og oppdatere JSON -dokumentene med letthet.

Redisjson 2.0 gir et internt og offentlig API som kan konsumeres av alle andre moduler som ligger i samme Redis -node. Det gir muligheten for modulene som Redisearch å samhandle med Redisjson -modulen. Med disse mulighetene kan Redis-databasen brukes som en kraftig dokumentorientert database som MongoDB.

Redisjson mangler fortsatt indekseringsfunksjonene som en dokumentdatabase. La oss se raskt på hvordan Redis gir indeksering for JSON -dokumenter.

Indekseringsstøtte for JSON -dokumenter

Et av de største problemene med Redisjson er at det ikke kommer med innebygde indekseringsmekanismer. Redis må støtte indekseringen ved hjelp av andre moduler. Heldigvis er Redisearch -modulen allerede der som gir indekserings- og søkeverktøy for Redis Hashes. Derfor ga Redis ut Redisearch 2.2 som støtter indeksering for dokumentbaserte JSON-data. Det ble ganske enkelt med Redisjsons interne offentlige API. Med den kombinerte innsatsen fra Redisjson og Redisearch-moduler, kan Redis-databasen lagre og indeksere JSON-dataene, og forbrukerne kan finne JSON-dokumentene ved å spørre innholdet som gjør Redis til en meget utførende dokumentorientert database.

Opprett en indeks med Redisearch

Ft.Opprett kommando brukes til å opprette en indeks ved hjelp av Redisearch. ON JSON -søkeordet skal brukes sammen med FT.Opprett kommando for å gi Redis beskjed om at de eksisterende eller nyopprettede JSON -dokumentene må indekseres. Siden Redisjson støtter JsonPath (fra versjon 2.0) Skjemaet del av denne kommandoen kan defineres ved hjelp av JSONPath -uttrykkene. Følgende syntaks brukes til å opprette en JSON -indeks for JSON -dokumenter i Redis Data Store.

Syntaks:

Ft.Opprett name_of_index på json schema jsonpath_expression som [attributt_navn] data_type

Når du kartlegger JSON -elementene til skjemafelt, er det et must å bruke de relevante skjemafelttypene som vist på følgende:

JSON Document Element Skjemafelttype
Strenger Tekst, geo, tag
Tall Numerisk
Boolsk STIKKORD
Array of Numbers (JSON Array) Numerisk, vektor
Array of Strings (JSON Array) Tag, tekst
Array of Geo Coordinates (JSON Array) Geo

I tillegg blir nullelementverdiene og nullverdiene i en matrise ignorert. Dessuten er det ikke mulig å indeksere JSON -objektene med Redisearch. I slike situasjoner bruker du hvert element i JSON -objektet som en egen attributt og indekser dem.

Indekseringsprosessen kjøres asynkront for de eksisterende JSON -dokumentene, og de nyopprettede eller modifiserte dokumentene indekseres synkront på slutten av "Opprett" eller "oppdatering" -kommandoen ".

I den følgende delen, la oss diskutere hvordan du legger til et nytt JSON -dokument i Redis Data Store.

Opprett et JSON -dokument med Redisjson

Redisjson -modulen gir JSON.Sett og JSON.ArraPPend -kommandoer for å opprette og endre JSON -dokumentene.

Syntaks:

JSON.SETT $

Bruk sak - Indeksering av JSON -dokumentene som inneholder ansattes data

I dette eksemplet vil vi lage tre JSON -dokumenter som holder ansattes data for ABC -selskapet. Deretter blir disse dokumentene indeksert ved hjelp av Redisearch. Til slutt spørres et gitt dokument ved hjelp av den nyopprettede indeksen.

Før du oppretter JSON -dokumentene og indeksene i Redis, bør Redisjson og Redisearch Modules installeres. Det er et par tilnærminger å bruke:

  • Redis Stack kommer med Redisjson og Redisearch -moduler som allerede er installert. Du kan bruke Redis Stack Docker -bildet til opp og kjøre en Redis -database som består av disse to modulene.
  • Installer Redis 6.X eller senere versjon. Deretter installer Redisjson 2.0 eller en senere versjon sammen med Redisearch 2.2 eller en senere versjon.

Vi bruker Redis Stack for å kjøre en Redis -database med Redisjson og Redisearch Modules.

Trinn 1: Konfigurer Redis Stack

La oss kjøre følgende Docker-kommando for å laste ned det nyeste Redis-Stack Docker-bildet og starte en Redis-database inne i en Docker-container:

Udo Docker Run -D -Name Redis -Stack -Latest -P 6379: 6379 -P 8001: 8001 Redis/Redis -Stack: Siste

Vi tildeler containernavnet, Redis-Stack-Latest. I tillegg er den interne containerporten 6379 er kartlagt til den lokale maskinporten 8001 også. De Redis/Redis-Stack: Siste Bilde brukes.

Produksjon:

Deretter kjører vi Redis-CLI mot den løpende Redis Container-databasen som følger:

sudo docker exec -it redis-stack-Latest redis-cli

Produksjon:

Som forventet starter Redis CLI -ledeteksten. Du kan også skrive inn følgende URL på nettleseren og sjekke om Redis -stabelen kjører:

Localhost: 8001

Produksjon:

Trinn 2: Opprett en indeks

Før du oppretter en indeks, må du vite hvordan JSON -dokumentelementene og strukturen ser ut. I vårt tilfelle ser JSON -dokumentstrukturen ut som følgende:


"Navn": "John Derek",
"Lønn": "198890",

Vi indekserer navnegenskapen til hvert JSON -dokument. Følgende Redisearch -kommando brukes til å opprette indeksen:

Ft.Lag empnameIdx på JSON -skjema $.Navn som EmployeeName -tekst

Produksjon:

Siden Redisearch støtter JSONPath -uttrykk fra versjonen 2.2, kan du definere skjemaet ved hjelp av JSONPath -uttrykkene som i forrige kommando.

$.Navn

MERK: Du kan spesifisere flere attributter i en enkelt FT.Opprett kommando som vist i følgende:

Ft.Lag empidx på JSON -skjema $.Navn som EmployeeName Text $.Lønn som ansattes numerisk

Trinn 3: Legg til JSON -dokumenter

La oss legge til tre JSON -dokumenter ved hjelp av JSON.Angi kommando som følger. Siden indeksen allerede er opprettet, er indekseringsprosessen synkron i denne situasjonen. De nylig lagt JSON -dokumentene er umiddelbart tilgjengelig på indeksen:

JSON.Sett EMP: 1 $ '"Navn": "Harris Rauf", "Lønn": 10000'
JSON.Sett EMP: 2 $ '"Navn": "Mark Wood", "Lønn": 34000'
JSON.Sett EMP: 3 $ '"Navn": "Mary Jane", "Lønn": 23000'

Produksjon:

For å vite mer om å manipulere JSON -dokumentene med Redisjson, ta en titt her.

Trinn 4: Spør de ansattes data ved hjelp av indeksen

Siden du allerede har opprettet indeksen, bør de tidligere opprettede JSON -dokumentene allerede være tilgjengelige i indeksen. Ft.Søkekommando kan brukes til å søke på ethvert attributt som er definert i EmpNameIdx skjema.

La oss søke etter JSON -dokumentet som inneholder "merke" -ordet i Navn Egenskap.

Ft.Søk empnameIdx '@EmployeeName: Mark'

Du kan også bruke følgende kommando:

Ft.Søk empnameIdx '@EmployEname: (Mark)'

Produksjon:

Som forventet lagres JSON -dokumentet på nøkkelen. EMP: 2 blir returnert.

La oss legge til et nytt JSON -dokument og sjekke om det er indeksert riktig. JSON.Set -kommando brukes som følger:

JSON.Sett EMP: 4 $ '"Navn": "Mary Nickolas", "Lønn": 56000'

Produksjon:

Vi kan hente det ekstra JSON -dokumentet ved hjelp av JSON.Få kommando som følger:

JSON.Få EMP: 4 $

MERK: Syntaksen til JSON.Få kommando er som følger:

JSON.FÅ $

Produksjon:

La oss kjøre FT.Søkekommando for å søke etter dokumentet (e) som inneholder ordet “Mary” i Navn attributt til JSON.

Ft.Søk empnameIdx '@EmployeeName: Mary'

Produksjon:

Siden vi fikk to JSON -dokumenter som inneholder ordet Mary i Navn attributt, to dokumenter returneres.

Det er flere måter å gjøre søking og indeksoppretting ved hjelp av Redisearch -modulen, og de blir diskutert i den andre artikkelen. Denne guiden fokuserer hovedsakelig på å gi en oversikt over høyt nivå og forståelse av indeksering av JSON-dokumenter i Redis ved hjelp av Redisearch og Redisjson-moduler.

Konklusjon

Denne guiden forklarer hvor kraftig Redis -indekseringen er hvor du kan spørre eller søke etter JSON -dataene basert på innholdet med lav latens.

Følg følgende lenker for å få flere detaljer om Redisjson og Redisearch -moduler:

  • Redisjson: https: // redis.IO/DOCS/STACK/JSON/
  • Redisearch: https: // redis.IO/DOCS/STACK/SØK/Søk/