使用StackExchange.Redis的正确方法

时间:2014-08-31 12:10:50

标签: c# redis stackexchange.redis

这个想法是使用更少的连接和更好的性能。 连接是否随时到期?

另一个问题是,_redis.GetDatabase()是否打开了新连接?

private static ConnectionMultiplexer _redis;
private static IDatabase _db;

public RedisCacheProvider(string configuration)
{
    if (_redis == null)
        lock (myLock)
            if (_redis == null)
            {
                _redis = ConnectionMultiplexer.Connect(configuration);
                _db = _redis.GetDatabase();
            }
}

public async Task<string> GetString(string key)
{
    string result = null;

    RedisValue val = await _db.StringGetAsync(key);

    if (val.HasValue)
        result = val;

    return result;
}

1 个答案:

答案 0 :(得分:12)

不,多路复用器不会过期。 No GetDatabase不会打开新连接。 basics.md涵盖了这一点 - 特别是:

  

从GetDatabase返回的对象是一个廉价的pass-thru对象,不需要存储。