キーでアイテムを効率的に取得したい Redis で大きなリスト (10K アイテムなど) を保持する最良の方法は何ですか。
Redis には、これを実現する Java の OrderedHashMap に相当するデータ構造がないようです。そのため、セットとリストを維持し、それらが同期していることを確認する必要があるかもしれません。
キーでアイテムを効率的に取得したい Redis で大きなリスト (10K アイテムなど) を保持する最良の方法は何ですか。
Redis には、これを実現する Java の OrderedHashMap に相当するデータ構造がないようです。そのため、セットとリストを維持し、それらが同期していることを確認する必要があるかもしれません。
ソート済みセットを使用します。
ブックマークを追加します。現在の時刻を使用しscore
て時系列に並べ替えます。
> zadd bookmarks 123 "bk1"
> zadd bookmarks 456 "bk2"
> zadd bookmarks 789 "bk3"
> zadd bookmarks 999 "bk4"
ブックマークを取得するには、最初にインデックスが必要です。
> zrank bookmarks "bk3"
> "3"
...次に、ブックマークをインデックスでプルします。
> zrevrange bookmarks 3 3
> "bk3"
タイムスタンプを使用したくない場合は、スコアに「1」を使用してブックマークを辞書順で並べ替えることができます。
> zadd bookmarks 1 "link_xyz"
> zadd bookmarks 1 "link_abc"
> zadd bookmarks 1 "link_foo"
> zrange bookmarks 0 -1
1) "link_abc"
2) "link_foo"
3) "link_xyz"
インデックス ルックアップは です。これO(log(n))
に追加して、O(log(n)+1)
インデックスによって単一のメンバーを取得します。リストよりも優れO(n)
ています。
また、同じブックマークを 2 回追加すると、redis は以前のメンバーを自動的に置き換えるため、重複を回避できます。
それが役に立てば幸い、