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

本文关键字:整数 范围 LastCommand 51410 sPort 一起 Redis 出错 | 更新日期: 2023-09-27 18:35:35

下面的代码在 redis 中设置一个密钥,如果它不存在,则有一个有效期,如果该密钥已经存在,则每次递增其值,当我尝试递增密钥的现有值时,即当它进入"If"块时,代码会给出异常

异常消息:值不是整数或超出范围,sPort:51814,最后一个命令:

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;
    }

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

想出了解决方案:

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

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

此命令可能不支持传递 float amount ,而不是 double amount 作为双精度。