servicestack,C#,Memcached,servicestack" /> servicestack,C#,Memcached,servicestack" />

C# 使用ICacheClient设置Sql依赖关系

C# 使用ICacheClient设置Sql依赖关系,c#,memcached,servicestack,C#,Memcached,servicestack,我在ASP.NET MVC4 API项目中使用ServiceStack进行缓存。现在我需要为它设置一个sql依赖项 是否有一种方法可以设置SQL依赖项ICacheClient 我想通过从post参数生成唯一的字符串来实现这一点。是否有方法从post参数或查询字符串参数生成唯一字符串 首先,您需要在数据库中启用更改跟踪 microsoft的方法是使用aspnet_regsql工具“启用”一个或多个数据库表上的缓存依赖项 aspnet_regsql-S localhost-E-d yourdatab

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

  • 是否有一种方法可以设置SQL依赖项
    ICacheClient
  • 我想通过从post参数生成唯一的字符串来实现这一点。是否有方法从post参数或查询字符串参数生成唯一字符串

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

    microsoft的方法是使用aspnet_regsql工具“启用”一个或多个数据库表上的缓存依赖项

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

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

    这将在表上创建update、insert、delete触发器,以增加它创建的另一个表中的计数器。 因此,当您在Users表上运行更新时,缓存表中相应的行的计数器将递增

    现在,您需要从ServiceStack层钩住这个新表

    一种方法是每X秒查询一次表(这将是一种快速查询,因为只有启用的表才会有相同数量的行)。返回的数据可能如下所示:

    TABLE    CHANGE_COUNT
    Users    13
    Tags     432
    

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

    您使用的是SQL Server吗?您是否通过触发器跟踪数据库中的更改?是的sql server 2008,没有使用触发器如何跟踪sql依赖项的数据库更改?嘿,这只是我的实际问题。如何追踪它?