3

我正在尝试使用 Azure 的 Redis StackExchange 更改提供程序,只是想知道最佳设置。

考虑以下代码

private static ConnectionMultiplexer connection = ConnectionMultiplexer.Connect(...);

public string Get(string key)
{
    IDatabase cache = connection.GetDatabase();
    return cache.StringGet(key);
}

每次调用缓存时,获取数据库都会对性能造成影响吗?

是否应该以其他方式进行管理?

它应该只在对象的生命周期内创建而不是静态的吗?

管理 IDatabase 的最佳实践是什么?

4

1 回答 1

6

每次调用缓存时,获取数据库都会对性能造成影响吗?

不是很明显;如此处所述

从返回的对象GetDatabase是一个廉价的传递对象,不需要存储。

当然,如果您愿意,您可以选择存储它。碰巧,我们这样做了——但这仅仅是因为我们使用了不同的数据库编号(针对不同的站点),存储 anIDatabase和存储int表示数据库编号的 一样方便。

不过,除此之外,您不必太担心 - 如果您按需分配,收集等仍然非常便宜。

唯一值得一提的是,在你接触 redis之前可能值得在内存中缓存:redis 调用很快,但你不进行的 redis 调用更快。

于 2014-06-24T11:37:51.137 回答