0

下面的代码在redis中设置一个具有有效期的键,如果它不存在,并且每次如果键已经存在就增加它的值,当我尝试增加一个键的现有值时,代码给出一个异常,即当它进入'If'

异常消息:值不是整数或超出范围,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;
    }
4

2 回答 2

1

想出了解决办法:

我正在为 Redis 使用所有必需的 ServiceStack dll 的旧版本,下载了所有必需 dll 的新版本,它现在可以完美运行。

于 2015-01-02T17:05:51.173 回答
0

INCRBYFLOAT期望增量是浮点数,而不是双精度数。

此命令可能不支持Pass float amount,而不是as double 。double amount

于 2014-12-30T09:16:31.920 回答