Pour faire quelque chose de vaguement similaire à "auto_increment", je regarderais la fonction INCR :
http://redis.io/commands/incr
Il incrémentera une valeur, vous renvoyant la nouvelle valeur - et elle est atomique (comme la plupart/toutes les commandes Redis), vous n'avez donc pas à vous soucier des problèmes de thread. Donc, vos étapes seraient quelque chose comme :
- DÉFINIR une clé d'incrémentation.
- Lorsque vous souhaitez ajouter une valeur, INCR la clé et SET votre nouvelle valeur en utilisant la valeur renvoyée par INCR.
- INCR a à ce stade augmenté la valeur de la clé d'incrémentation, de sorte que toute insertion de valeur répétée utilisera le nombre "suivant".
Si vous voulez stocker une liste d'éléments qui peuvent être recherchés par index, vous voudrez probablement faire quelque chose comme ceci (en programmation 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)
Dans cet exemple, je suppose que dans votre programme, vous suivez les valeurs renvoyées par INCR. La valeur renvoyée par INCR sera l'index auquel vous insérez le nouvel élément, ainsi que l'index avec lequel vous chercherez votre élément plus tard. Ainsi, dans mon exemple de code, remplacez (valeur d'index) par la valeur stockée que vous avez récupérée d'INCR (la façon dont vous procédez dépend du langage de programmation que vous utilisez, bien sûr).
Notez que cela permet la suppression d'éléments au milieu, via DEL myList:(index value)
, car vous suivez le dernier index avec index
, donc même si un élément est supprimé, le dernier index restera le même - cela se comporte de manière très similaire aux champs "d'incrémentation automatique" dans la plupart des serveurs SQL.
Vous ne voulez vraiment pas utiliser des ensembles pour cela; les ensembles sont intrinsèquement non ordonnés et ils ne sont pas vraiment conçus pour rechercher des éléments par "clé" - les éléments d'un ensemble n'ont même pas vraiment de clé. Les ensembles sont plus utiles pour les autres opérations d'ensemble que vous pouvez effectuer sur eux, comme SINTER ou SDIFF.