Речь идет о RedisClient, который является клиентом C ++.
Я знаю, что вы не можете хранить целые числа в Redis (которые внутренне преобразованы).
Команда RedisSyncClient :: сама по себе не поддерживает целые числа, поскольку 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;
INT: 0, STR: 1
Сначала я подумал, что внутренне строки были преобразованы в int, но он всегда возвращает «0». При тестировании RedisValue.isInt () кажется, что он не может распознать числа, так как возвращает «false».
Теперь вещи имеют смысл для меня …
Кажется, что это может быть использовано для ответов redis, таких как:
result = redis->command("EXISTS", "mykey");
cout << "? " << result.isInt() << endl;
? 1
В этом случае toInt () работает как положено.
Мне просто нужно просмотреть документацию Redis и посмотреть, какие команды возвращают Int. Он не предназначен для использования с «нормальными» значениями.
(извините за ответ на свой вопрос, я был бы рад принять другие ответы, если они охватывают вещи, которые я пропустил).
Других решений пока нет …