4

redis リスト型で整数をプッシュするにはどうすればよいですか? lpushfinagle-redis クライアントが正しく動作するかどうかをテストし、手動のサンプル データを次のように redis に挿入したい

127.0.0.1:6379> rpush key:214 1 1 1
 (integer) 3
127.0.0.1:6379> LRANGE key:214 0 -1
 1) "1"
 2) "1"
 3) "1"

Redis はすでに数値を char として表示しています。それらを抽出すると、文字も取得されます。

val data: List[ChannelBuffer] = Await.result(redisClient.lRange(key, 0, -1))
val buffer: ChannelBuffer = data(0)
buffer.readChar() // 1
buffer.readInt() // 49

cli クライアントで整数をリストに書き込むことはできますか? そうでない場合、次の方法でも機能しますか?

val key = ChannelBuffers.copiedBuffer("listkey", utf8)
val list: List[ChannelBuffer] = List(1,1,1).map { number =>
   val buffer = ChannelBuffers.buffer(4) // int sized buffer
   buffer.writeInt(number)
   buffer
}

// will this store the int's correctly??
redisClient.lpush(key, list)
4

1 に答える 1

3

redis では、ほとんどすべてが文字列です。これは、使用されているプロトコルが原因です。これはテキストベースなので、 number1234と stringを区別することはできません"1234"

内部に整数を格納している可能性がありますが、とにかく文字列を取得します。アプリで数字をキャストする必要があります。

于 2015-08-26T13:15:44.467 に答える