2016-04-16 7 views
0

私は私の解決策をいくつか変更しました。私が今得たいのは、与えられた範囲のキーに対して、キーとスコアのペアです。例えば: セット= [1:3,2:5,7:8,10:1]の範囲のための [2,8]私は取得したい:2:5,7:8]Redisソートセットの最後に挿入されたアイテムのキーとスコアを取得

Redisソートされたセットから最後に挿入された(または最後の5つの)アイテムを取得するにはどうすればよいですか。私はzrange関数を試しましたが、ソートを行うときにスコアを考慮に入れています。どういうわけかそれらを挿入時間でソートすることはできますか?または、キーで?

私はリストを使用すると考えましたが、キーで要素にアクセスする必要があります。そのため、ソートされたセット(アクセス時間の複雑さが改善されています)を使用する必要があります。

ありがとうございます!

+1

あなたが使ったスコアは何かを意味しますか?多分あなたはスコアとしてタイムスタンプを使用できますか? –

+0

はい、スコアは重要です。私はその質問を編集した。今、私はキーレンジに基づいて間隔を取得したいと思います。 zrangeはスコア値に基づいて結果を与える。 – giliev

+0

これを行うためにluaスクリプトを追加することもできます。要求を受け取ったら、RDMSで行うように、 'key'にインデックスを作成するような2つのzset構造にデータを入れます。あなたはスコアでも範囲を取得しますか?そうでない場合は、スコアとともにkeyinfoを追加するアルゴリズムを使用することもできます。 –

答えて

0

スコアを合成値にすることができます:タイムスタンプと元のスコアの連結。

最初の10桁は、アイテムが挿入されたときのタイムスタンプです。最後のx桁はアイテムのスコアです(最初に0を加えて常に同じ桁数にする必要があることを意味します)。

例:148594228400023

その後、あなたはzrevrangebyscoreとの最後の5つの挿入のアイテムを取得し、項目のスコアを取得することができます。

関連する問題