Ricerca…


introduzione

Lo spazio delle chiavi di Redis può essere pensato come una tabella di hash o un dizionario che mappa le chiavi alle strutture di dati nel database.

Redis fornisce una vasta gamma di comandi che funzionano con le chiavi per gestire lo spazio delle chiavi, inclusa la possibilità di rimuovere le chiavi, ispezionare i metadati chiave, cercare le chiavi e modificare determinate proprietà delle chiavi.

Sintassi

  • Modello CHIAVI
  • Tasto PERSIST
  • EXPIRE secondi chiave
  • Timestamp del tasto EXPIREAT
  • Chiave TTL
  • I millisecondi chiave di PEXPIRE
  • PexPIREAT key milliseconds-timestamp
  • Tasto PTTL
  • Tasto UNLINK [tasto ...]
  • Tasto CANC [tasto ...]
  • Cursore SCAN [pattern MATCH] [COUNT count]

Osservazioni

Per i caratteri validi nei tasti Redis , il manuale lo spiega completamente :

Le chiavi Redis sono binary safe, questo significa che puoi usare qualsiasi sequenza binaria come una chiave, da una stringa come "foo" al contenuto di un file JPEG. Anche la stringa vuota è una chiave valida.

Alcune altre regole sui tasti:

Le chiavi molto lunghe non sono una buona idea, ad esempio una chiave di 1024 byte è una cattiva idea non solo per quanto riguarda la memoria, ma anche perché la ricerca della chiave nel set di dati può richiedere diversi costosi confronti-chiave. Anche quando il compito da svolgere è quello di abbinare l'esistenza di un grande valore, ricorrere all'hashing (per esempio con SHA1) è un'idea migliore, specialmente dal punto di vista della memoria e della larghezza di banda.

Le chiavi molto corte spesso non sono una buona idea. Non ha molto senso scrivere "u1000flw" come chiave se invece è possibile scrivere "user: 1000: followers". Quest'ultimo è più leggibile e lo spazio aggiunto è minore rispetto allo spazio utilizzato dall'oggetto chiave stesso e dall'oggetto valore. Mentre i tasti brevi ovviamente consumano un po 'meno di memoria, il tuo compito è trovare il giusto equilibrio.

Cerca di seguire uno schema. Ad esempio "object-type: id" è una buona idea, come in "user: 1000". I punti o i trattini vengono spesso utilizzati per i campi a più parole, come in "commento: 1234: reply.to" o "commento: 1234: risposta a".

La dimensione massima della chiave consentita è 512 MB.

Fare attenzione quando si utilizza il comando KEYS su un sistema di produzione, può causare seri problemi di prestazioni. Se è necessario eseguire una ricerca sullo spazio delle chiavi, i comandi SCAN rappresentano un'alternativa migliore.

Chiavi valide

Le chiavi Redis sono sicure per il codice binario, quindi letteralmente tutto può essere usato come chiave. Le uniche limitazioni sono che devono essere inferiori a 512 MB.

Esempi di chiavi valide:

7
++++
`~!@#$%^&*()-_=+
user:10134
search/9947372/?query=this%20is%20a%28test%29%20query
<div id="div64">

Any other string less than 512MB in size.
The raw binary content of an image or other binary file.
An entire multi-line text document.
An entire SQL query.
Any integer, hexadecimal, octal, or binary value.
Anything else you can think of less than 512MB in size. 

Tasti Redis non validi:

Anything larger than 512MB.

Schemi di denominazione delle chiavi

Per chiarezza e manutenibilità, si consiglia spesso di sviluppare un sistema o uno schema per nominare le proprie chiavi Redis. Ecco alcuni esempi di sistemi comuni e manutenibili per la denominazione delle chiavi:

user:10134
user:10134:favorites
user:10134:friends
user:10134:friends-of-friends

user:10134
user:10134/favorites
user:10134/friends
user:10134/friends.of.friends

user/10134
user/10134/favorites
user/10134/friends
user/10134/friends of friends

Tieni presente che, sebbene consentito, i tasti più grandi utilizzano più memoria e comportano tempi di ricerca più lenti, pertanto l'utilizzo di una chiave da 500 MB potrebbe non essere una buona idea per le prestazioni. Un'idea migliore potrebbe essere quella di utilizzare un hash SHA-1, SHA-256 o MD5 di un oggetto binario di grandi dimensioni come chiave invece:

image/9517bb726d33efdc503a43582e6ea2eea309482b
image52e9df0577fca2ce022d4e8c86b1eccb070d37bef09dec36df2fabbfa7711f5c

Elenco di tutte le chiavi

È possibile elencare tutte le chiavi in ​​un database Redis eseguendo i seguenti comandi da redis-cli:

KEYS *

Il parametro su KEYS è un'espressione di corrispondenza del modello glob-style. Esempi di pattern supporter includono:

h?llo matches hello, hallo and hxllo
h*llo matches hllo and heeeello
h[ae]llo matches hello and hallo, but not hillo
h[^e]llo matches hallo, hbllo, ... but not hello
h[a-b]llo matches hallo and hbllo

L'utilizzo del comando KEYS * può avere effetti negativi sulle prestazioni, pertanto non è consigliato rispetto alle istanze di produzione. Utilizzare l'operazione SCAN per cercare le chiavi nel codice di produzione.

TTL e scadenza chiave

I valori di scadenza di una chiave possono essere gestiti da un utente al di fuori dei comandi di aggiornamento. Redis consente a un utente di determinare l'ora corrente da vivere (TTL) di una chiave utilizzando il comando TTL:

TTL key

Questo comando restituirà il TTL di una chiave in secondi o restituirà i valori speciali -1 o -2. A -1 indica che la chiave è persistente (non scadrà) e a -2 indica che la chiave non esiste.

Una chiave in scadenza può essere resa persistente usando il comando PERSIST:

PERSIST KEY

e una chiave persistente può essere fatta scadere usando il comando EXPIRE:

EXPIRE KEY seconds

La scadenza può anche essere utilizzata per modificare il TTL di una chiave esistente. In alternativa, è possibile utilizzare il comando EXPIREAT con un timestamp UNIX per impostare un tempo di scadenza.

Esistono versioni in millisecondi di comandi TTL, EXPIRE e EXPIREAT preceduti da un P.

Cancellare chiavi

Redis fornisce due funzioni per la rimozione delle chiavi dal database: del e unlink.

La funzione rimuove una o più chiavi dal database. Il comando del comando fa sì che Redis richieda immediatamente la memoria per la chiave cancellata sul thread corrente di esecuzione. Il tempo di esecuzione per del è proporzionale al numero di singoli elementi cancellati da tutte le chiavi.

La funzione di scollegamento funziona come il comando del comando, rimuove una o più chiavi dal database. Tuttavia, a differenza del comando del, qualsiasi memoria utilizzata da quelle chiavi viene recuperata in modo asincrono su un altro thread.

Scansione di Redis Keyspace

Redis fornisce il comando SCAN per scorrere le chiavi nel database che corrisponde a un particolare modello. Redis supporta la corrispondenza del modello stile glob nel comando SCAN.

Il comando SCAN fornisce un iteratore basato su cursore sullo spazio delle chiavi di Redis. La sequenza di chiamate iterativa a SCAN inizia con l'utente che effettua una chiamata con l'argomento del cursore impostato su 0. Il risultato di tale chiamata è un gruppo di voci e un cursore aggiornato che viene fornito alla successiva chiamata a SCAN. Questa iterazione continua fino a quando Redis non restituisce un cursore 0.

La seguente funzione di Python dimostra l'utilizzo di base di SCAN:

def scan_keys(r, pattern):
    "Returns a list of all the keys matching a given pattern"

    result = []
    cur, keys  = r.scan(cursor=0, match=pattern, count=2)
    result.extend(keys)
    while cur != 0:
        cur, keys = r.scan(cursor=cur, match=pattern, count=2)
        result.extend(keys)
        
    return result

Il comando SCAN è il metodo consigliato per cercare le chiavi nel database ed è consigliato tramite il comando KEYS * .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow