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 に答える