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:
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: