「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など、セットで実行できる他のセット操作に役立ちます。