0

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

  1. 有没有办法设置 SQL 依赖ICacheClient
  2. 我想通过从帖子参数生成唯一的字符串来做到这一点。有没有办法从发布参数或查询字符串参数生成唯一字符串?
4

1 回答 1

2

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

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

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

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

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

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

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

TABLE    CHANGE_COUNT
Users    13
Tags     432

使用返回的数据,您可以构建分代缓存键。如果/当更改计数增加时,这意味着下次您获取缓存键时,其中的数字将发生变化,因此使缓存伪无效。

于 2013-09-06T11:15:13.900 回答