sql >> Database >  >> NoSQL >> Redis

sleutel invoegen in redis

Om iets te doen dat vaag lijkt op "auto_increment", zou ik naar de INCR-functie kijken:

http://redis.io/commands/incr

Het zal een waarde verhogen en de nieuwe waarde aan u teruggeven - en het is atomair (zoals de meeste/alle Redis-commando's), dus u hoeft zich geen zorgen te maken over threading-problemen. Dus je stappen zouden zoiets zijn als:

  1. STEL een verhogingstoets in.
  2. Als u een waarde wilt toevoegen, INCR de sleutel en STEL uw nieuwe waarde in met de waarde die INCR wordt geretourneerd.
  3. INCR heeft op dit moment de waarde van de ophogingstoets verhoogd, dus elke herhaalde waarde-invoeging zal het "volgende" nummer gebruiken.

Als u een lijst met items wilt opslaan die op index kunnen worden opgezocht, wilt u waarschijnlijk iets als dit doen (in het programmeren van 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 dit voorbeeld ga ik ervan uit dat u in uw programma de waarden bijhoudt die door INCR worden geretourneerd. De waarde die INCR retourneert, wordt de index waarop u het nieuwe item invoegt, evenals de index waarmee u uw item later zult opzoeken. Dus vervang in mijn voorbeeldcode (indexwaarde) door de opgeslagen waarde die je terugkreeg van INCR (hoe je dit doet hangt natuurlijk af van de programmeertaal die je gebruikt).

Merk op dat dit WEL het verwijderen van items in het midden toestaat, via DEL myList:(index value) , omdat u de laatste index bijhoudt met index , dus zelfs als een item wordt verwijderd, blijft de laatste index hetzelfde - dit gedraagt ​​zich vergelijkbaar met "auto-increment"-velden in de meeste SQL-servers.

Hier wil je eigenlijk geen sets voor gebruiken; sets zijn inherent ongeordend, en ze zijn niet echt gemaakt om dingen op te zoeken op "sleutel" - items in een set hebben niet eens echt een sleutel. Sets zijn nuttiger voor de andere setbewerkingen die u erop kunt uitvoeren, zoals SINTER of SDIFF.




  1. MongoDB - bestandsgrootte is enorm en groeit

  2. Bereken het gemiddelde van velden in ingesloten documenten/array

  3. $project:Is het mogelijk om toegang te krijgen tot een eigenschap van een expressieresultaat in slechts één enkele fase?

  4. DisabledBackend:grillig gedrag met selderij, redis en kolf