我有一个sql服务器中的表,我将从.net MVC代码多次查询,我想实现appfabric缓存,而不是sql server查询(仅限于此查询)。我如何实现这一点? 如果查询是 - 从id = @cid的人中选择地址;appfabric缓存,而不是查询sql服务器
CID可以是1,2或3,来自码
我有一个sql服务器中的表,我将从.net MVC代码多次查询,我想实现appfabric缓存,而不是sql server查询(仅限于此查询)。我如何实现这一点? 如果查询是 - 从id = @cid的人中选择地址;appfabric缓存,而不是查询sql服务器
CID可以是1,2或3,来自码
你真的需要的AppFabric对于这种情况?
我的意思是说,AppFabric Caching的目标是大容量的网站,其中数据库是瓶颈,本地缓存不再是一个好的选择。是的,它是高速缓存,但适用于大数据和分布式场景。另外,您必须为缓存层安装其他专用服务器。
也许一个基本的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服务器,这是相当足够的。
只要您不需要远程使缓存失效 - 并且您的目标.Net> = 4 - [MemoryCache](http://msdn.microsoft.com/zh-cn/library/system.runtime .caching.memorycache(v = vs.110).aspx)确实非常有用。我们有一个使用AppFabric集群的系统,如果集群关闭,则回落到MemoryCache:我们必须接受,我们不能在MemoryCache缓存的生命周期内使缓存的数据无效,但在我们的场景中这是可以接受的,我们在MemoryCache中使用简短的缓存过期来缓解该问题。 – stuartd
我只是在学习基础知识,我们的应用程序确实有大量的。所以我们需要一点一点地开始appfabric。 – Nithin
@Nithin正如我所说,在跳入AppFabric之前,尝试使用MemoryCache是没有代价的。有了一点抽象概念,为MemoryCache和AppFabric实现一个通用缓存客户端并且在您最喜爱的IoC实现之间切换并不困难。高音量不是一个真正的问题。什么是重要的:你有多少个Web服务器?数据库活动是什么? – Cybermaxs
无论高速缓存使用,你会添加不同的缓存条目对于每个查询,使用基本密钥的结构和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;
}
[此博客文章](http://www.hanselman.com/blog/InstallingConfiguringAndUsingWindowsServerAppFabricAndTheVelocityMemoryCacheIn10Minutes.aspx)应涵盖大部分需要的内容。 –