大根LSET

Da Genlset



Redis リストは、一連の文字列要素を挿入順序で保持するデータ構造です。これは、リンクされたリストに基づいています。そのため、先頭と末尾への要素の挿入は一定時間で実行されます。 Redis リストの唯一の欠点は、インデックスによる要素のクエリが少しコストがかかり、アクセスする要素のインデックスに正比例して時間がかかることです。リンク リスト ベースの実装の背後にある理由は、アイテムの非常に長いリストのデータ挿入を高速化するためです。

Redis リストには 0 ベースのインデックスがあります。最初の要素は 0 として指定されます 番目 索引; 2番目のものは1にあります st インデックスなど。最後の要素は -1、最後から 2 番目の要素は -2 などのように、負のインデックスを使用してインデックスを使用してテール要素にアクセスすることができます。









リスト要素は、LSET コマンドを使用して任意のインデックスに設定できます。これについては、次のセクションで説明します。



LSET コマンド

LSET コマンドは、指定されたキーに格納されている Redis リストの指定されたインデックスに要素を設定します。次の簡単な構文があります。





LSET list_key インデックス要素

list_key : Redis リストのキー。

索引 : 要素を設定する必要があるインデックス。



エレメント : 指定されたインデックスに設定される文字列要素。

要素が適切に設定されている場合、このコマンドは単純な文字列「OK」を返します。範囲外のインデックスが検出されると、LSET コマンドはエラーを返します。

Redis リストの最も一般的な使用例の 1 つは、個々のユーザーのソーシャル メディアの投稿とその更新を保存することです。次のセクションで説明するように、LSET コマンドはそこで重要な役割を果たします。

ユース ケース – ソーシャル メディアの投稿を更新する

企業が独自のソーシャル メディア Web サイトを維持し、何千人ものユーザーが積極的に投稿やステータスを投稿しているイベントを想定してみましょう。彼らは、Redis リストが、挿入が頻繁に行われるこれらの投稿とステータスを保持するのに適した候補であり、Redis リストが一定時間内に挿入を実行することを特定しました。

特定のユーザー ID 100 の Redis リストを作成して、特定のユーザーの投稿とステータス メッセージを保存するために使用します。 LPUSH コマンドを使用して、ユーザー ID 100 のダミーの投稿とステータス メッセージを配置します。

LPUSH social-media:user:100 '2022-08-01: 良いスタートの日'
LPUSH social-media:user:100 '2022-08-05:linuxhintに転職しました'
LPUSH social-media:user:100 '2022-08-06:Great party today'
LPUSH social-media:user:100 '2022-08-07:Bad day!!!'

出力

ユーザー ID 100 のユーザーが古い投稿の 1 つを更新するとします。彼が投稿した 3 番目の投稿を修正する必要があるとします。以下に示すように、LSET コマンドを使用すると、これを簡単に実現できます。

3 番目の要素は、Head からのインデックス 2 にあるためです。以下のとおり更新いたします。

LSET social-media:user:100 2 'LinuxHint でライターとして新たな役割を開始しました'

出力

予想通り、コマンドは正常に実行され、2 番目のインデックスの要素が更新されました。次のようにリストを再確認しましょう。

次のように末尾からインデックスを指定することで、同じことができます。

LSET social-media:user:100 -2 'LinuxHint でライターとして新たな役割を開始しました'

予想どおり、3 番目の要素は新しい文字列「Job started at LinuxHINT」に設定されています。

範囲外のインデックスを指定すると、次のようにエラーが発生します。

LSET social-media:user:100 6 'Job started at LinuxHINT'

出力

結論

LSET コマンドは、指定されたインデックスにあるリスト要素を、指定されたキーに格納されている Redis リストの指定された要素に設定します。 Redis リストのインデックスは 0 から始まるため、最初の要素です。インデックス 1 はリストの 2 番目の要素です。説明したように、末尾から始まる要素のインデックスは、-1 が最後の要素、-2 が最後の要素の前の要素などのように、負の数を使用して指定できます。存在しないインデックスが渡されると、LSET コマンドはエラーを返します。さらに、このコマンドは、実行が成功すると単純な文字列出力を返します。