私は、rpopがRedis listの最後の要素を削除していることを知っています。特定の範囲(例:0〜100) ?Redisリストでlrange +(リストからlrangeの結果を削除する)
これがlrange + rpopの組み合わせであることを希望します。
私は、rpopがRedis listの最後の要素を削除していることを知っています。特定の範囲(例:0〜100) ?Redisリストでlrange +(リストからlrangeの結果を削除する)
これがlrange + rpopの組み合わせであることを希望します。
を使用してそれを送信することです。
http://redis.io/commands/ltrim
リスト中の第一100個の要素を検索し、削除します。
lrange list 0 100
ltrim list 0 100
私が知る限り、リストから項目の範囲をポップするための定義済みのコマンドはありません。 redisに一連のrpopコマンドを送信する必要があります。 Redisでは多くの短いコマンドを送信するのが普通ですから、100個(または1000個)のrpopコマンドを連続して送信することは問題にはなりません。 パフォーマンスを向上させるには、「パイプライン処理」を使用して複数のコマンドを1回の操作で送信できます。これを行う正確な方法は、ドライバによって異なります。
もう一つの方法は、Luaのスクリプトを書いて、あなたがこれを達成するためにLRANGEとLTRIMを結合する必要がeval
ltrimだけで十分ではありませんか? – Prem
Ltrimの返事はOKです。 lrangeを必要とする場合は、ltrimを発行してリストから削除することができます。原子を作るためにそれらを組み合わせる –
これはいくつかのレベルでは正しくありません。最初にLRANGE list 0 99'を実行したい最初の100項目を取得すると、LTRIMがあなたの言うことの中で何かを実行することがあります。最初の100項目を残し、それ以外はすべて削除します。最初の100個のアイテムを削除したい場合は、 'LTRIM list 100 -1'を実行する必要があります(つまり、アイテム100から始まるものはすべて残してください)。 もっと重要なことに、この操作はアトミックではないので、最初と2番目のステートメントの間で変更する必要があります - それをアトミックにする方法を理解する必要があります – mlasevich