Um etwas ähnlich wie "auto_increment" zu machen, würde ich mir die INCR-Funktion ansehen:
http://redis.io/commands/incr
Es erhöht einen Wert und gibt Ihnen den neuen Wert zurück - und es ist atomar (wie die meisten/alle Redis-Befehle), sodass Sie sich keine Gedanken über Threading-Probleme machen müssen. Ihre Schritte würden also etwa so aussehen:
- SETZEN Sie eine Inkrementtaste.
- Wenn Sie einen Wert hinzufügen möchten, INCR den Schlüssel und SETZEN Sie Ihren neuen Wert mit dem zurückgegebenen Wert INCR.
- INCR hat an dieser Stelle den Wert der Inkrementtaste erhöht, sodass alle wiederholten Werteingaben die "nächste" Zahl verwenden.
Wenn Sie eine Liste von Elementen speichern möchten, die per Index nachgeschlagen werden können, möchten Sie wahrscheinlich so etwas tun (bei der Programmierung von Pseudocode):
// 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 diesem Beispiel gehe ich davon aus, dass Sie in Ihrem Programm die von INCR zurückgegebenen Werte verfolgen. Der Wert, den INCR zurückgibt, ist der Index, an dem Sie das neue Element einfügen, sowie der Index, mit dem Sie Ihr Element später nachschlagen. Ersetzen Sie also in meinem Beispielcode (Indexwert) durch den gespeicherten Wert, den Sie von INCR erhalten haben (wie Sie dies tun, hängt natürlich davon ab, welche Programmiersprache Sie verwenden).
Beachten Sie, dass dies das Löschen von Elementen in der Mitte über DEL myList:(index value)
erlaubt , da Sie den letzten Index verfolgen mit index
, selbst wenn also ein Element gelöscht wird, bleibt der letzte Index immer noch derselbe - dies verhält sich bei den meisten SQL-Servern sehr ähnlich wie "Auto Increment"-Felder.
Sie möchten dafür wirklich keine Sätze verwenden; Sets sind von Natur aus ungeordnet und nicht wirklich dafür gemacht, Dinge nach "Schlüsseln" nachzuschlagen - Elemente in einem Set haben nicht einmal wirklich einen Schlüssel. Sets sind nützlicher für die anderen Set-Operationen, die Sie mit ihnen ausführen können, wie SINTER oder SDIFF.