For at gøre noget, der vagt ligner "auto_increment", ville jeg se på INCR-funktionen:
http://redis.io/commands/incr
Det vil øge en værdi og returnere den nye værdi til dig - og det er atomisk (som de fleste/alle Redis-kommandoer), så du behøver ikke bekymre dig om trådningsproblemer. Så dine skridt ville være noget som:
- INDSTIL en stigningsnøgle.
- Når du vil tilføje en værdi, skal du INCR tasten og INDSTILLE din nye værdi ved at bruge den returnerede værdi INCR.
- INCR har på dette tidspunkt øget værdien af stigningsnøglen, så alle gentagne værdiindsættelser vil bruge det "næste" nummer.
Hvis du vil gemme en liste over elementer, som kan slås op efter indeks, vil du sandsynligvis gøre noget som dette (i programmering af pseudokode):
// 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)
I dette eksempel antager jeg, at du i dit program holder styr på de værdier, der returneres af INCR. Værdien INCR returnerer vil være det indeks, som du indsætter den nye vare ved, såvel som det indeks, som du vil slå din vare op med senere. Så i min eksempelkode skal du erstatte (indeksværdi) med den lagrede værdi du fik tilbage fra INCR (hvordan du gør dette afhænger selvfølgelig af hvilket programmeringssprog du bruger).
Bemærk, at dette IKKE tillader sletning af elementer i midten via DEL myList:(index value)
, fordi du sporer det sidste indeks med index
, så selvom et element slettes, vil det sidste indeks stadig forblive det samme - dette opfører sig meget på samme måde som "auto inkrement"-felter i de fleste SQL-servere.
Du ønsker virkelig ikke at bruge sæt til dette; sæt er i sagens natur uordnede, og de er ikke rigtig lavet til at slå ting op ved "nøgle" - elementer i et sæt har ikke engang en nøgle. Sæt er mere nyttige til de andre sæthandlinger, du kan udføre på dem, såsom SINTER eller SDIFF.