0

これは、C++ クライアントであるRedisClientに関するものです。

Redis に整数を格納できないことは知っています (内部的に変換されます)。

RedisSyncClient::command 自体は整数をサポートしていません。RedisBuffer は int で初期化できないため、次のようになります。

redis->command("SET", "mykey", 1);

コンパイルされません (数値を文字列として追加する必要があります)。

ただし、RedisValue は int で初期化でき (いつ使用されるかは不明)、公開されている「toInt()」メソッドが含まれています。

redis->command("SET", "mykey", "1"); result = redis->command("GET", "mykey"); cout << "INT: " << result.toInt() << " , STR: " << result.toString() << endl;

知力:0、力力:1

最初は内部で文字列をintに変換しているのかと思ったのですが、必ず「0」を返します。「RedisValue.isInt()」をテストすると、「false」が返されるため、数値の認識に失敗しているようです。

  • 数値が (このライブラリによって) 文字列としてのみ表示される場合、「toInt()」の意図は何ですか?
  • 私はそれを間違って使用していますか?
  • これは開発中の機能ですか?
4

1 に答える 1

1

今、私には理にかなっています...次のようなredis応答に使用される可能性があるようです:

result = redis->command("EXISTS", "mykey"); cout << "? " << result.isInt() << endl;

? 1

この場合、 toInt() は期待どおりに機能します。

redis のドキュメントを調べて、どのコマンドが int を返すかを確認する必要があります。「通常の」値で使用するようには設計されていません。

(私自身の質問に答えて申し訳ありません。他の回答が私が見逃したことをカバーしていれば、喜んで受け入れます)。

于 2015-10-09T07:40:27.900 に答える