Supporto JSON in Redis

Supporto JSON in Redis

Redis espande le sue funzionalità esistenti con supporto per moduli avanzati. Utilizza il modulo Redisjson per fornire il supporto JSON nei database Redis. Il modulo Redisjson ti dà un'interfaccia per leggere, salvare e aggiornare i documenti JSON con facilità.

Redisjson 2.0 fornisce un'API interna e pubblica che può essere consumata da qualsiasi altro moduli che risiedono nello stesso nodo Redis. Dà la possibilità ai moduli come Redisearch di interagire con il modulo Redisjson. Con queste funzionalità, il database Redis può essere utilizzato come un potente database orientato al documento come MongoDB.

Redisjson manca ancora delle funzionalità di indicizzazione come database di documenti. Diamo un'occhiata rapida a come Redis fornisce indicizzazione per i documenti JSON.

Supporto di indicizzazione per i documenti JSON

Uno dei principali problemi di Redisjson è che non viene fornito con meccanismi di indicizzazione integrati. Redis deve supportare l'indicizzazione con l'aiuto di altri moduli. Fortunatamente, il modulo Redisearch è già presente che fornisce strumenti di indicizzazione e ricerca per hashes Redis. Quindi, Redis ha rilasciato Redisearch 2.2 che supporta l'indicizzazione per i dati JSON basati su documenti. È diventato abbastanza facile con l'API pubblica interna di Redisjson. Con lo sforzo combinato dei moduli Redisjson e Redisearch, il database Redis può archiviare e indicizzare i dati JSON e i consumatori possono individuare i documenti JSON interrogando il contenuto che rende Redis un database altamente orientato ai documenti.

Crea un indice con Redisearch

Furto.Il comando Crea Crea viene utilizzato per creare un indice utilizzando Redisearch. La parola chiave su JSON dovrebbe essere utilizzata insieme a FT.Crea il comando per far sapere a Redis che devono essere indicizzati i documenti JSON esistenti o appena creati. Poiché Redisjson supporta JSONPATH (dalla versione 2.0), la parte dello schema di questo comando può essere definita usando le espressioni JSONPATH. La seguente sintassi viene utilizzata per creare un indice JSON per i documenti JSON nel Redis Data Store.

Sintassi:

Ft.Crea name_of_index su JSON Schema jsonpath_expression come [attributo_name] data_type

Quando mappini gli elementi JSON sui campi dello schema, è necessario utilizzare i tipi di campo dello schema pertinenti come mostrato da segue:

Elemento del documento JSON Tipo di campo dello schema
stringhe Testo, geo, tag
Numeri NUMERICO
Booleano ETICHETTA
Array di numeri (Array JSON) Numerico, vettore
Array of Strings (JSON Array) Tag, testo
Array di coordinate GEO (Array JSON) Geo

Inoltre, i valori degli elementi null e i valori null in un array vengono ignorati. Inoltre, non è possibile indicizzare gli oggetti JSON con Redisearch. In tali situazioni, utilizzare ogni elemento dell'oggetto JSON come attributo separato e indicirli.

Il processo di indicizzazione viene eseguito in modo asincrono per i documenti JSON esistenti e i documenti appena creati o modificati sono indicizzati in modo sincrono alla fine del comando "crea" o "aggiornamento".

Nella sezione seguente, discutiamo di come aggiungere un nuovo documento JSON al Redis Data Store.

Crea un documento JSON con Redisjson

Il modulo Redisjson fornisce il JSON.Set e Json.ARRAPPend Comands per creare e modificare i documenti JSON.

Sintassi:

JSON.IMPOSTATO $

Caso di utilizzo: indicizzare i documenti JSON che contengono i dati dei dipendenti

In questo esempio, creeremo tre documenti JSON che detengono i dati dei dipendenti per la società ABC. Successivamente, tali documenti sono indicizzati usando Redisearch. Infine, un determinato documento viene interrogato utilizzando l'indice appena creato.

Prima di creare i documenti e gli indici JSON in Redis, i moduli Redisjson e Redisearch dovrebbero essere installati. Ci sono un paio di approcci da usare:

  • Redis Stack viene fornito con moduli Redisjson e Redisearch che sono già installati. È possibile utilizzare l'immagine Docker Redis Stack per aumentare ed eseguire un database Redis che consiste in questi due moduli.
  • Installa Redis 6.versione x o successiva. Quindi, installa Redisjson 2.0 o una versione successiva insieme a Redisearch 2.2 o una versione successiva.

Usiamo lo stack Redis per eseguire un database Redis con Redisjson e Redisearch Moduli.

Passaggio 1: configurare lo stack Redis

Eseguiamo il seguente comando Docker per scaricare l'ultima immagine Docker Redis-Stack e avviare un database Redis all'interno di un contenitore Docker:

Udo Docker Run -d -Name Redis -Stack -Latest -p 6379: 6379 -P 8001: 8001 Redis/Redis -Stack:

Assediamo il nome del contenitore, Redis-Stack-Latest. Inoltre, la porta del contenitore interno 6379 è mappato alla porta della macchina locale 8001 anche. IL Redis/Redis-Stack: ultimo L'immagine viene utilizzata.

Produzione:

Successivamente, eseguiamo il redis-cli contro il database del contenitore Redis in esecuzione come segue:

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

Produzione:

Come previsto, inizia il prompt della CLI Redis. Inoltre, è possibile digitare il seguente URL sul browser e verificare se lo stack Redis è in esecuzione:

LocalHost: 8001

Produzione:

Passaggio 2: crea un indice

Prima di creare un indice, devi sapere come sono i tuoi elementi e la struttura del documento JSON. Nel nostro caso, la struttura del documento JSON sembra le seguenti:


"Nome": "John Derek",
"Stipendio": "198890",

Indicizziamo l'attributo nome di ogni documento JSON. Il seguente comando Redisearch viene utilizzato per creare l'indice:

Ft.Crea empnameIDX su JSON Schema $.Nome come testo di Employeename

Produzione:

Poiché Redisearch supporta le espressioni JSONPATH dalla versione 2.2, è possibile definire lo schema usando le espressioni JSONPATH come nel comando precedente.

$.nome

NOTA: È possibile specificare più attributi in un singolo FT.Crea comando come mostrato nel seguente:

Ft.Crea empidx su JSON Schema $.Nome come testo di Employeename $.Stipendio come numerico dipendente

Passaggio 3: aggiungi i documenti JSON

Aggiungiamo tre documenti JSON usando il JSON.Imposta il comando come segue. Poiché l'indice è già creato, il processo di indicizzazione è sincrono in questa situazione. I nuovi documenti JSON aggiunti sono immediatamente disponibili sull'indice:

JSON.Set emp: 1 $ '"nome": "Harris Rauf", "Stipendio": 10000'
JSON.Set emp: 2 $ '"nome": "Mark Wood", "Stipendio": 34000'
JSON.Set emp: 3 $ '"nome": "Mary Jane", "Stipendio": 23000'

Produzione:

Per saperne di più sulla manipolazione dei documenti JSON con Redisjson, dai un'occhiata qui.

Passaggio 4: interrogare i dati dei dipendenti utilizzando l'indice

Dal momento che hai già creato l'indice, i documenti JSON precedentemente creati dovrebbero essere già disponibili nell'indice. Furto.Il comando di ricerca può essere utilizzato per cercare qualsiasi attributo definito empnameIdx schema.

Cerchiamo il documento JSON che contiene la parola "marchio" nel nome attributo.

Ft.Cerca EmpNameIDX '@mployename: mark'

Puoi anche usare il seguente comando:

Ft.Cerca EmpNameIDX '@mployename: (mark)'

Produzione:

Come previsto, il documento JSON è archiviato alla chiave. EMP: 2 è restituito.

Aggiungiamo un nuovo documento JSON e controllia se è indicizzato correttamente. Il json.Il comando set viene utilizzato come segue:

JSON.Set emp: 4 $ '"nome": "Mary Nickolas", "Stipendio": 56000'

Produzione:

Possiamo recuperare il documento JSON aggiunto usando il JSON.Ottieni il comando come segue:

JSON.Ottieni EMP: 4 $

NOTA: La sintassi del JSON.Ottieni comando è il seguente:

JSON.OTTENERE $

Produzione:

Eseguiamo il FT.Ricerca il comando per cercare i documenti che contiene la parola "Maria" nel nome Attributo di JSON.

Ft.Cerca EmpNameIDX '@mployename: Mary'

Produzione:

Da quando abbiamo ottenuto due documenti JSON che contengono la parola Maria nel nome attributo, vengono restituiti due documenti.

Esistono diversi modi per effettuare la ricerca e la creazione di indice usando il modulo Redisearch e quelli sono discussi nell'altro articolo. Questa guida si concentra principalmente sul fornire una panoramica di alto livello e comprensione dell'indicizzazione dei documenti JSON in Redis usando Redisearch e Redisjson Moduli.

Conclusione

Questa guida spiega quanto è potente l'indicizzazione Redis dove è possibile interrogare o cercare i dati JSON in base al suo contenuto con bassa latenza.

Segui i seguenti link per ottenere maggiori dettagli sui moduli Redisjson e Redisearch:

  • Redisjson: https: // redis.io/docs/stack/json/
  • Redisearch: https: // Redis.io/docs/stack/ricerca/