将Redis与C#一起使用时出错:value不是整数或超出范围,sPort:51410,LastCommand:

时间:2014-12-30 07:26:59

标签: c# c#-4.0 redis servicestack.redis

下面的代码在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;
    }

2 个答案:

答案 0 :(得分:1)

找出解决方案:

我使用了所有必需的ServiceStack dll's for Redis的旧版本,下载了所有必需的dll的新版本,现在它完美无瑕。

答案 1 :(得分:0)

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

传递float amount,而不是double amount,因为此命令可能不支持double。