sql >> Databasteknik >  >> NoSQL >> Redis

få in nyckel i redis

För att göra något vagt liknande "auto_increment" skulle jag titta på INCR-funktionen:

http://redis.io/commands/incr

Det kommer att öka ett värde och returnera det nya värdet till dig - och det är atomärt (som de flesta/alla Redis-kommandon), så du behöver inte oroa dig för trådningsproblem. Så dina steg skulle vara något i stil med:

  1. STÄLL in en inkrementnyckel.
  2. När du vill lägga till ett värde, INCR nyckeln och ställ in ditt nya värde med värdet INCR som returneras.
  3. INCR har vid det här laget ökat värdet på inkrementnyckeln, så alla upprepade värdeinfogningar kommer att använda "nästa"-numret.

Om du vill lagra en lista över objekt som kan slås upp med index, vill du förmodligen göra något så här (i programmering av pseudokod):

// 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 det här exemplet antar jag att du i ditt program håller reda på värdena som returneras av INCR. Värdet INCR returnerar kommer att vara indexet där du infogar det nya objektet, såväl som indexet som du kommer att slå upp ditt objekt med senare. Så, i min exempelkod, ersätt (indexvärde) med det lagrade värdet du fick tillbaka från INCR (hur du gör detta beror naturligtvis på vilket programmeringsspråk du använder).

Observera att detta INTE tillåter radering av objekt i mitten, via DEL myList:(index value) , eftersom du spårar det sista indexet med index , så även om ett objekt raderas, kommer det sista indexet fortfarande att förbli detsamma - detta beter sig mycket på samma sätt som "automatiska inkrement"-fält i de flesta SQL-servrar.

Du vill verkligen inte använda set för detta; set är i sig oordnade, och de är egentligen inte gjorda för att slå upp saker med "nyckel" - föremål i en uppsättning har inte ens en nyckel. Uppsättningar är mer användbara för andra setoperationer du kan utföra på dem, som SINTER eller SDIFF.




  1. Finns det något sätt att återställa nyligen raderade dokument i MongoDB?

  2. Matchningsalternativet Redis skanningskommando fungerar inte i Python

  3. Hur man tar bort Redis på "meddelande"-lyssnare

  4. Hur man kontrollerar anslutningen till mongodb