Redis
 sql >> Database >  >> NoSQL >> Redis

ottenere la chiave inserita in redis

Per fare qualcosa di vagamente simile a "auto_increment", guarderei la funzione INCR:

http://redis.io/commands/incr

Incrementerà un valore, restituendoti il ​​nuovo valore - ed è atomico (come la maggior parte/tutti i comandi Redis), quindi non devi preoccuparti di problemi di threading. Quindi i tuoi passi sarebbero qualcosa del tipo:

  1. IMPOSTA una chiave di incremento.
  2. Quando vuoi aggiungere un valore, INCR la chiave e SET il tuo nuovo valore utilizzando il valore restituito da INCR.
  3. INCR ha a questo punto aumentato il valore della chiave di incremento, quindi qualsiasi inserimento di valore ripetuto utilizzerà il numero "successivo".

Se vuoi memorizzare un elenco di elementi che possono essere cercati per indice, probabilmente vorrai fare qualcosa del genere (in programmazione pseudocodice):

// When you initialize your database for the first time.
SET index "0"

// When you want to insert a new item:
INCR index
SET myList:(index value) "My Value"

// When you want to retrieve an item, and you have the index for it:
GET myList:(index value)

In questo esempio, presumo che nel tuo programma tu stia tenendo traccia dei valori restituiti da INCR. Il valore restituito da INCR sarà l'indice in cui inserisci il nuovo articolo, nonché l'indice con cui cercherai il tuo articolo in un secondo momento. Quindi, nel mio codice di esempio, sostituisci (valore indice) con il valore memorizzato che hai ricevuto da INCR (il modo in cui lo fai dipende dal linguaggio di programmazione che stai usando, ovviamente).

Nota che ciò consente la cancellazione degli elementi nel mezzo, tramite DEL myList:(index value) , perché stai monitorando l'ultimo indice con index , quindi anche se un elemento viene eliminato, l'ultimo indice rimarrà lo stesso:si comporta in modo molto simile ai campi di "incremento automatico" nella maggior parte dei server SQL.

Non vuoi davvero usare i set per questo; i set sono intrinsecamente disordinati e non sono fatti per cercare le cose per "chiave" - ​​gli oggetti in un set non hanno nemmeno una chiave. I set sono più utili per le altre operazioni sui set che puoi eseguire su di essi, come SINTER o SDIFF.