appfabric缓存而不是查询SQL Server

时间:2013-12-23 06:25:27

标签: asp.net-mvc appfabric appfabric-cache

我在sql server中有一个表,我将从.net MVC代码中多次查询,我想实现appfabric缓存而不是sql server查询(仅适用于此查询)。我该如何实现? 如果查询是 - 从id = @cid;

的人中选择地址

cid可以是1,2或3,来自代码

2 个答案:

答案 0 :(得分:3)

在这种情况下你真的需要AppFabric吗?

我的意思是,AppFabric缓存面向数据库是瓶颈的高容量网站,本地缓存不再是一个好选择。是的,它是缓存,但适用于大型数据和分布式场景。此外,您还必须为缓存层安装其他专用服务器。

也许基本的MemoryCache足以启动:本地缓存,无需安装,无需额外的服务器以及.net bcl中的内置支持。

这是一个基本的例子:

//Create a cache instance
ObjectCache cache = MemoryCache.Default;     

//check the cache for a specific value
if (cache.Contains("mydata"))     
{         
    //get an item from the cache
    var value=cache.Get("mydata");     
}     
else    
{     
    //load data
    var data=fetchData();
    //add an data to the cache 
    cache.Add("mydata", data);     
} 

对于缓存一小块数据和一个(或几个)Web服务器,这已经足够了。

答案 1 :(得分:0)

无论您使用哪个缓存,都可以为每个查询添加不同的缓存条目,使用基本密钥的构造和ID作为缓存键,以及从数据库返回缓存值:

public Address GetData(int cId)
{
    const string AddressCacheKeyBase = "AddressCacheKey";
    string key = AddressCacheKeyBase + cId;

    var cachedData = cache.Get(key); 

    if (cachedData != null)
    {   
         return (Address)cachedData;      
    }

    Address address = GetAddressFromDatabase(cID);
    cache.Add(key, address);

    return address;
}