2012-04-27 58 views
0

我们当前将现有的Web应用程序移至Azure。 Azure缓存是very slowAzure - 多种实例减缓Windows Azure缓存的替代方法

有任何替代缓存机制在Azure的多实例(比天青缓存更好)?例如,将缓存存储在Azure存储或Azure SQL中。

谢谢您的意见!

新增

public class AzureCacheService : ICacheService 
{ 
    readonly DataCacheFactory _factory = new DataCacheFactory(); 

    private readonly DataCache _cache; 

    public AzureCacheService() 
    { 
     _cache = _factory.GetDefaultCache(); 
    } 

    public object Get(string key) 
    { 
     return _cache.Get(key); 
    } 

    public void Insert(string key, object obj) 
    { 
     if (obj != null) 
     { 
      _cache.Put(key, obj, new TimeSpan(3, 0, 0)); 
     } 
    } 

    public void Remove(string key) 
    { 
     _cache.Remove(key); 
    } 
} 

*** Accessing *** 
IoC.Resolve<ICacheService>().Insert(key, MyObject); 

IoC.Resolve<ICacheService>().Remove(key); 
+0

你能不能给我们详细介绍一下到底什么是您所看到的等待时间(以及你正在使用,对象大小等这些API)?可能有助于确定问题出在哪里。 – Tom 2012-04-27 17:51:35

+0

尽管最初的启动可能需要几秒钟的时间,但一旦连接完成,它非常快速。我通常会看到10ms以下的延迟。如果它比这慢得多,那么很可能你做错了什么。 – 2012-04-27 18:08:13

+0

Tom&Breishl - 我添加了代码。 – Win 2012-04-27 18:32:10

回答

2

一般来说,WA缓存是慢,特别是如果你打开“本地缓存”(一般应该将延迟降低到约0毫秒,只要数据拟合在记忆中)。 Memcached是另一种可能性:http://blog.smarx.com/posts/memcached-in-windows-azure

你不会找到在西澳缓存和Memcached的性能之间的订单数量级的差别,但在我的经验Memcached是快一点。 Memcached 不会能够击败WA缓存中的“本地缓存”功能,不过,因为在字面上没有延迟。 (这是没有序列化的进程内数据访问。刚想尽可能高效是可能的。)

+0

本地高速缓存将大量增加读取时,如果它是你的缓存性能击中你的本地缓存。但我不认为它会增加写入性能,因为它仍然需要去AppFabric Cache。 – 2012-04-28 01:49:49

+0

肖恩的写作表现的权利。 – smarx 2012-04-28 02:20:37

0

这是我的误解,认为Windows Azure的缓存是基于SQL Azure和采取纠正资源,我能够确认它肯定是内存缓存后。所以如果您决定使用SQL Azure编写自己的应用程序,那么您现在已经获得的内容会更慢,Azure表存储也会更慢。 [注释的其余部分被删除]

+1

“Windows Azure缓存后端基于SQL Azure。”你确定吗?我的理解是,它建立在AppFabric缓存组件(与Windows相同)上,它完全是一个内存缓存。 – smarx 2012-04-27 15:35:15

+0

这只是不正确的。 Azure缓存基本上是Windows Appfabric缓存,它是一个内存缓存。它不涉及SQL Server。 “缓存提供了一种分布式,内存,应用程序缓存” - http://www.windowsazure.com/en-us/home/features/caching/ – 2012-04-27 18:06:33

0

可以使用最近发布的Windows Azure缓存(预览)。与共享缓存相比,它有5倍的提高。

链接:http://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/

+0

Karthik R - 是的,您可以在新的Windows Azure缓存(预览)中使用Windows Sever AppFabric功能。因为当时的答案是正确的,所以我会留下接受的答案。谢谢您的回答! – Win 2012-06-22 14:55:17