功能结果的缓存

时间:2014-09-09 14:38:21

标签: sql-server sql-server-2012

我基本上想在这种格式的Web应用程序中编写一堆常用查询:

SELECT *
FROM secure_table
WHERE security_function(value 1, value 2) = true;

值1和值2将具有足够有限的值范围,以便缓存安全性函数的结果,从而在提高应用程序性能方面可能非常有用。我们还需要能够随意触发缓存重置,因为某些条件会使缓存的值过时。

使用SQL Server是否有开箱即用的方式(我相信我们将使用2012版本)?我有一个谷歌周围没有看到任何具体的,一些引用ASP.NET状态,但没有具体的实际涉及的内容,以及一些对memcached的引用,但这似乎没有下降到功能级别,所以没有'似乎也适合。

编辑:

所以我希望这个函数可以像这样工作:

function security_function(val1, val2)  {
result = getFromCache(val1, val2)
if result is empty then
result = //do big complicated query
addToCache(val1, val2, result)
end

return result
}

1 个答案:

答案 0 :(得分:0)

如果您使用的是ASP.Net,则可以使用缓存对象来存储查询结果:

在c#中:

Results GetResults(string value1, string value2)
{
   string cacheItemName = "cacheItem-" + value1 + "-" + value2;
   if (Cache[cacheItemName] != null)
   {
      return Cache[cacheItemName];
   }
   else
   {
      var result = // do big complicated query;
      Cache.Insert(cacheItemName, result,
             null, DateTime.Now.AddMinutes(15d),  // Expire after 15 minutes 
                   System.Web.Caching.Cache.NoSlidingExpiration);
      return result;

   }

}