6

LPUSH を使用して複数の値を redis LIST にプッシュしようとしています。コードは次のようになります。

mylist = ["1", "2", "3", "4"]
$redis.lpush(name, mylist)

上記の問題は、リストが「1234」のように平坦化されることです。この場合、LPUSH を使用して 4 つの個別の要素をname配列にプッシュするにはどうすればよいですか?

4

3 に答える 3

3

あなたは見たいと思うかもしれません:

Redis-rb バージョン 2.2.2 は可変長コマンドをサポートしていません。バージョン 3.0 で導入されましたが、まだ配信されていません。

可変引数コマンドで配列を処理する特定の方法はありません。あなたのコードはおそらくバージョン 3.0 で問題なく動作します。

当面は、次のようなパイプラインを使用することをお勧めします。

name = "toto"
mylist = [ 1,2,3,4,5 ]
$redis.pipelined{ mylist.each{ |x| $redis.lpush(name,x) } }

パイプラインを使用すると、ラウンドトリップの数は、可変引数コマンドを使用する場合と同じになります。

本当に可変引数コマンドを使用したい場合は、次のコマンドを使用して 3.0 のプレリリース バージョンを簡単にインストールできます。

gem install --prerelease redis
gem list redis 

*** LOCAL GEMS ***
redis (3.0.0.rc1, 2.2.2)

次を使用して、スクリプトでアクティブ化します。

gem 'redis', '3.0.0.rc1'
require 'redis'

redis gem に依存する他の gem がある場合は、依存関係の問題が発生することに注意してください。正式な配信 IMO を待つ方がよいでしょう。

于 2012-04-25T08:30:00.933 に答える
0

あなたができること:

# If you want ["1","2","3","4",...restofarray...]
mylist.reverse.each{ |v| $redis.lpush(name,v) }

# If you want ["4","3","2","1",...restofarray...]
mylist.each{ |v| $redis.lpush(name,v) }
于 2012-04-24T17:39:30.457 に答える
0

v 3.0 + の構文は次のとおりです。

r= Redis.new()

r.lpush("mylist", ["element1", "element2" , "element3"])
于 2017-12-15T18:18:10.657 に答える