Redis リストはLinked listを使用して実装されており、Linked List はそのような使用 (つまり、ランダム アクセスと効率的なインデックス作成) には適していません。
「a」(包括的)までのすべての要素をどこかに保存してから、それらを使用してリストから削除しLTRIM
、必要な順序で再度プッシュする必要があります(つまりRPOP
、最後の要素をLPUSH
ing して ing した後)。Redisはすぐに使用できるため、組み込みの Lua スクリプトを使用してこれを行うことができます。
ただし、各単語をリストに 1 回だけ表示する場合は、 Sorted Setを使用して効率的に行うことができます。特定の要素のスコアを、他のすべての要素よりも大きな値に更新する必要があります ( ZADD
)。次に、ZRANGEBYSCORE
並べ替えられたセットを取得するために a を実行します。
ただし、ソートされたセットの使用にはトレードオフがあり、ほとんどの場合、要素の挿入/削除は、リストからの値のプッシュ/ポップ (つまり、一定時間で発生) よりも遅くなります (つまり、対数時間で発生します)。それはすべて問題によって異なります。さまざまなアプローチを比較検討し (Redis のドキュメントでは、各操作の時間の複雑さを説明しています)、問題に合ったものを選択する必要があります。