1

私はこのコードを使用しています:

sadd my_set "el1"

「el1」を my_set に挿入します。sadd は、挿入された要素の数のみを返します。後で取得できるように、挿入された要素のキーが必要です。私が気づいていない方法があると確信しています。sadd は正しい関数ですか、それとも set/get などの別の関数を選択する必要がありますか?

編集: mysql の auto_increment キーのようなものが必要です。何かを挿入すると、最後に挿入された要素を取得して、さらに使用できるようにします。

私はこのようなものが必要です:

key: 1
value: {"name": "jack", "tel": "12412415"}

したがって、key = 1 を使用して配列を取得できます。

4

1 に答える 1

4

「auto_increment」と漠然と似ていることを行うには、INCR 関数を調べます。

http://redis.io/commands/incr

値をインクリメントし、新しい値を返します。これは (ほとんど/すべての Redis コマンドと同様に) アトミックであるため、スレッドの問題について心配する必要はありません。したがって、手順は次のようになります。

  1. インクリメントキーを設定します。
  2. 値を追加する場合は、キーを INCR し、返された INCR の値を使用して新しい値を設定します。
  3. この時点で 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)追跡しているため、これにより途中でアイテムを削除できることに注意してください。したがって、アイテムが削除されても、最後のインデックスは同じままです。ほとんどの SQL サーバーのフィールド。index

これにはセットを使用したくありません。セットは本質的に順不同であり、実際には「キー」で物事を調べるように作られているわけではありません。セット内のアイテムには実際にはキーさえありません。セットは、SINTER や SDIFF など、セットに対して実行できる他のセット操作に役立ちます。

于 2013-05-30T18:09:17.147 に答える