我在ASP.NET MVC4 API项目中使用ServiceStack进行缓存。现在我需要为它设置一个sql依赖项。
ICacheClient
?答案 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
使用返回的数据,您可以构建分代缓存键。如果/当更改计数递增时,它将意味着下次获取缓存密钥时,其中的数字将发生更改,从而使缓存无效。