14

キャッシュをクエリする単一のマシンの負荷が高いシナリオで、Azure Redis Cache を使用しています。このマシンは、およそ 1 秒間に約 20 個のアイテムを取得および設定します。昼間は増えますが、夜は減ります。

これまでのところ、問題なく動作しています。今日、「接続されたクライアント」のメトリックが非常に高いことに気付きましたが、アイテムを常に取得および設定するクライアントは 1 つしかありません。ここに私が意味するメトリックのスクリーンショットがあります: Redis Cache 接続クライアント

私のコードは次のようになります。

public class RedisCache<TValue> : ICache<TValue>
{
    private IDatabase cache;
    private ConnectionMultiplexer connectionMultiplexer;

    public RedisCache()
    {
        ConfigurationOptions config = new ConfigurationOptions();
        config.EndPoints.Add(GlobalConfig.Instance.GetConfig("RedisCacheUrl"));
        config.Password = GlobalConfig.Instance.GetConfig("RedisCachePassword");
        config.ConnectRetry = int.MaxValue; // retry connection if broken
        config.KeepAlive = 60; // keep connection alive (ping every minute)
        config.Ssl = true;
        config.SyncTimeout = 8000; // 8 seconds timeout for each get/set/remove operation
        config.ConnectTimeout = 20000; // 20 seconds to connect to the cache

        connectionMultiplexer = ConnectionMultiplexer.Connect(config);
        cache = connectionMultiplexer.GetDatabase();
    }

    public virtual bool Add(string key, TValue item)
    {
        return cache.StringSet(key, RawSerializationHelper.Serialize(item));
    }

このクラスの複数のインスタンスを作成していないので、これは問題ではありません。接続メトリックを誤解している可能性があります。それらが実際に意味するのは、キャッシュにアクセスする回数ですが、私の意見では意味がありません。任意のアイデア、または同様の問題を抱えている人はいますか?

4

1 に答える 1