За да направя нещо смътно подобно на "auto_increment", бих погледнал функцията INCR:
http://redis.io/commands/incr
Той ще увеличи стойност, връщайки ви новата стойност - и тя е атомна (като повечето/всички команди на Redis), така че не е нужно да се притеснявате за проблеми с нишката. Така че вашите стъпки биха били нещо като:
- ЗАДАДЕТЕ клавиш за увеличаване.
- Когато искате да добавите стойност, INCR ключа и ЗАДАЙТЕ новата си стойност, като използвате върнатата стойност INCR.
- INCR към този момент е увеличил стойността на ключа за нарастване, така че всяко повтарящо се вмъкване на стойност ще използва "следващия" номер.
Ако искате да съхраните списък с елементи, които могат да се търсят по индекс, вероятно искате да направите нещо подобно (при програмиране на псевдокод):
// 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)
В този пример предполагам, че във вашата програма вие следите стойностите, върнати от INCR. Стойността, която INCR връща, ще бъде индексът, в който вмъквате новия елемент, както и индексът, с който ще търсите своя елемент по-късно. И така, в моя примерен код заменете (стойност на индекса) със съхранената стойност, която сте получили от INCR (как ще направите това зависи от езика за програмиране, който използвате, разбира се).
Имайте предвид, че това НЕ позволява изтриване на елементи в средата чрез DEL myList:(index value)
, защото проследявате последния индекс с index
, така че дори ако даден елемент бъде изтрит, последният индекс ще остане същият - това се държи много подобно на полетата за "автоматично увеличаване" в повечето SQL сървъри.
Наистина не искате да използвате набори за това; комплектите по своята същност са неподредени и всъщност не са направени да търсят нещата по "ключ" - елементите в комплекта дори всъщност нямат ключ. Наборите са по-полезни за другите операции с набори, които можете да извършвате върху тях, като SINTER или SDIFF.