我在单台机器查询缓存的高负载方案中使用 Azure Redis 缓存。这台机器大约每秒获取和设置大约 20 个项目。白天增加,夜间减少。
到目前为止,一切正常。今天我意识到“连接的客户端”的指标非常高,尽管我只有 1 个客户端经常获取和设置项目。这是我的意思的指标的屏幕截图:
我的代码如下所示:
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));
}
我没有创建这个类的多个实例,所以这不是问题。也许我误解了连接指标,它们的真正含义是我访问缓存的次数,但是,在我看来,这并没有什么意义。有什么想法,或者有类似问题的人吗?