2016-09-27 5 views

答えて

3

を使用してそれを送信することです。

http://redis.io/commands/ltrim

リスト中の第一100個の要素を検索し、削除します。

lrange list 0 100 
ltrim list 0 100 
+0

ltrimだけで十分ではありませんか? – Prem

+1

Ltrimの返事はOKです。 lrangeを必要とする場合は、ltrimを発行してリストから削除することができます。原子を作るためにそれらを組み合わせる –

+1

これはいくつかのレベルでは正しくありません。最初にLRANGE list 0 99'を実行したい最初の100項目を取得すると、LTRIMがあなたの言うことの中で何かを実行することがあります。最初の100項目を残し、それ以外はすべて削除します。最初の100個のアイテムを削除したい場合は、 'LTRIM list 100 -1'を実行する必要があります(つまり、アイテム100から始まるものはすべて残してください)。 もっと重要なことに、この操作はアトミックではないので、最初と2番目のステートメントの間で変更する必要があります - それをアトミックにする方法を理解する必要があります – mlasevich

1

私が知る限り、リストから項目の範囲をポップするための定義済みのコマンドはありません。 redisに一連のrpopコマンドを送信する必要があります。 Redisでは多くの短いコマンドを送信するのが普通ですから、100個(または1000個)のrpopコマンドを連続して送信することは問題にはなりません。 パフォーマンスを向上させるには、「パイプライン処理」を使用して複数のコマンドを1回の操作で送信できます。これを行う正確な方法は、ドライバによって異なります。

もう一つの方法は、Luaのスクリプトを書いて、あなたがこれを達成するためにLRANGELTRIMを結合する必要がeval

関連する問題