86

単純なredisリストキー=>"supplier_id"があります

これで、実際にリストから値を繰り返したりポップしたりせずに、リストのすべての値を取得したいのです。

リストからすべての値を取得する例これで、redisの長さを反復処理できます

element = []
0.upto(redis.llen("supplier_id")-1) do |index| 
  element << redis.lindex("supplier_id",index)
 end

これは、おそらくより良いredisモデリングを使用して、反復なしで実行できますか。誰でも提案できますか

4

2 に答える 2

195

Redisでリストのすべてのアイテムを取得するために、個々のアイテムを繰り返してフェッチする必要はありません。それは本当に非効率的でしょう。

LRANGEコマンドを使用するだけで、すべてのアイテムを1回のショットで取得できます。

elements = redis.lrange( "supplier_id", 0, -1 )

リスト自体を変更せずに、リストのすべてのアイテムを返します。

于 2012-05-22T20:26:41.060 に答える
2

あなたの質問については少しわかりませんが、supplier_idが数値の場合は、?を使用してみませんZSETか?

次のように値を追加します。

ZADD suppliers 1 "data for supplier 1"  
ZADD suppliers 2 "data for supplier 2"  
ZADD suppliers 3 "data for supplier 3"  

次に、次のように、(サプライヤ3を除く)までのすべてを削除できます。

ZREMRANGEBYSCORE suppliers -inf 2

また

ZREMRANGEBYSCORE suppliers -inf (3

また、読み取りを行うだけの場合は、(サプライヤーIDによる)非常に高速なアクセスが可能になります。

お役に立てば幸いです。

于 2012-05-22T15:39:50.140 に答える