我正在计划将 C# ASP.Net Web 应用程序移至 Azure(当前托管在单个专用服务器上),并且正在研究缓存选项。目前,因为我们一次只运行一个应用程序实例,所以我们有一个“进程中”内存缓存来减轻 SQL DB 中一些相同的请求。
目前的过程是当管理器/服务对数据库的这些部分进行更改时清除缓存的某些部分,例如,我们有一个用户表,我们将拥有像“User.{0}”这样的键,返回一个单个用户记录/对象和“Users.ForeignKey.{0}”返回与外键相关的所有用户。如果我们更新单个用户记录,那么我们将删除“User.1”键(如果 userid = 1)并为方便所有列表集合,因为它们可能已更改。我们通过按模式删除键来做到这一点,这意味着只有受影响的键被删除,而所有其他键仍然存在。
我们计划迁移到 Azure 已经有一段时间了,当我们第一次开始查看 Azure Redis 缓存服务不可用的所有内容时,至少不支持,所以我们查看了基于 AppFabric 的 Azure 缓存服务。使用这个我们决定我们将使用 DataCache 区域来分隔不同的对象类型,然后只刷新受影响的区域,虽然不像我们当前的方法那么精确,但可以。现在,自从 Redis 出现以来,我们一直在研究它,如果可能的话,我们更愿意使用它。但是,似乎要实现相同的目标,我们必须为每个“区域”/部分设置单独的 Redis 缓存,
任何人都知道如何使用 Redis 实现类似于 Azure DataCache Regions 的功能,或者您能否提出一些我可能遗漏的明显内容。
抱歉这么长的问题/解释,但我发现很难在没有背景/背景的情况下解释我想要实现的目标。
谢谢,加雷斯
更新:
我发现了一些 bash 命令可以完成按模式删除键的工作,包括在此处使用 'KEYS' 命令和在此处使用 lua 脚本 EVAL 命令。
我打算使用 StackExchange.Redis 客户端进行交互,有谁知道在使用 StackExchange.Redis 时如何使用这些类型的命令或替代这些命令(按模式删除键)?
感谢阅读,加雷斯