我正在尝试在Azure中使用Redis在我的应用程序中进行缓存。我的每个密钥每个都可以超过2-4MB。当我在我的本地计算机上对Redis运行我的应用程序时,一切都很棒,但是当在Azure上运行时性能非常糟糕时,检索密钥通常需要8-10秒,实际上我可以更快地从原始数据中重新获取此数据源而不是缓存。
所以我想第一个问题是,我的钥匙太大了吗?我只是使用Redis咆哮错误的树木吗?
如果没有,任何想法为什么这么慢?该应用程序是Azure网站,网站和redis实例位于同一区域。我正在使用stackexchange redis客户端并在global.asax文件中创建多路复用器作为单例,以避免重新创建它,代码如下:
的Global.asax:
redisConstring = ConfigurationManager.ConnectionStrings["RedisCache"].ConnectionString;
if (redisConstring != null)
{
if (RedisConnection == null || !RedisConnection.IsConnected)
{
RedisConnection = ConnectionMultiplexer.Connect(redisConstring);
}
RedisCacheDb = RedisConnection.GetDatabase();
Application["RedisCache"] = RedisCacheDb;
}
Web API控制器:
IDatabase redisCache = System.Web.HttpContext.Current.Application["RedisCache"] as IDatabase;
string cachedJson = redisCache.StringGet(id);
if (cachedJson == null)
{
cachedJson=OutfitFactory.GetMembersJson(id);
redisCache.StringSet(id, cachedJson, TimeSpan.FromMinutes(15));
}
return OutfitFactory.GetMembersFromJson(cachedJson);
答案 0 :(得分:3)
从评论中,听起来问题是带宽......所以:使用更少的带宽。思路:
供参考,在SE,我们使用gzip压缩的protobuf-net进行包装