Ошибка при использовании Redis с C#: значение не является целым числом или находится вне диапазона, sPort: 51410, LastCommand:
Следующий код ниже устанавливает ключ в redis с периодом истечения, если он не существует, и увеличивает его значение каждый раз, если ключ уже существует, код выдает исключение, когда я пытаюсь увеличить существующее значение ключа, то есть когда он входит в блок "Если"
Сообщение об исключении: значение не является целым числом или находится вне диапазона, sPort: 51814, LastCommand:
public bool SetKeyInRedis(string Id, double Amount)
{
bool b = false;
try
{
string Key = "Id:" + Id;
using (var redisClient = new RedisClient(RedisIPAddress,RedisPortNo))
{
if (redisClient.Exists(Key) == 1)
{
redisClient.IncrByFloat(Key, Amount);
b = true;
}
else if (redisClient.Exists(Key) == 0)
{
DateTime Today = DateTime.Now;
DateTime EndOfMonth = new DateTime(Today.Year, Today.Month, DateTime.DaysInMonth(Today.Year, Today.Month));
b = redisClient.Set<double>(Key, Amount, EndOfMonth);
}
else
{
//to-do
}
}
}
catch (Exception Ex)
{
Console.WriteLine(Ex.Message);
}
return b;
}
2 ответа
Решение
Разобрался с решением:
Я использовал более старую версию всех необходимых DLL- файлов ServiceStack для Redis, скачал новые версии всех необходимых DLL-файлов, и теперь он работает без нареканий.
INCRBYFLOAT ожидает, что приращение будет плавающим, а не двойным.
Проходить float amount
, вместо double amount
двойная может не поддерживаться этой командой.