使用ICacheClient设置Sql依赖关系

时间:2013-09-06 07:14:32

标签: c# memcached servicestack

我在ASP.NET MVC4 API项目中使用ServiceStack进行缓存。现在我需要为它设置一个sql依赖项。

  1. 有没有办法设置SQL依赖项ICacheClient
  2. 我想通过从post参数生成唯一字符串来实现它。有没有办法从post参数或查询字符串参数生成唯一字符串?

1 个答案:

答案 0 :(得分:2)

首先,您需要在数据库中启用更改跟踪。

这样做的微软方法是使用aspnet_regsql工具在一个或多个数据库表上“启用”缓存依赖。

  

aspnet_regsql -S localhost -E -d yourdatabase -ed //启用数据库   用于缓存

     

aspnet_regsql -S localhost -E -d yourdatabase -et -t yourtable //   启用缓存表

这将在表上创建更新,插入,删除触发器,以在其创建的另一个表中递增计数器。 因此,当您在Users表上运行更新时,缓存表中的相应行将使其计数器递增。

现在您需要从ServiceStack层挂接到这个新表。

一种方法是每隔X秒查询一次表(这将是一个快速查询,因为只有与启用表一样多的行)。返回的数据可能如下所示:

TABLE    CHANGE_COUNT
Users    13
Tags     432

使用返回的数据,您可以构建分代缓存键。如果/当更改计数递增时,它将意味着下次获取缓存密钥时,其中的数字将发生更改,从而使缓存无效。