2017-03-18 193 views
1

我想在ASP.Net核心应用中实现缓存。目前我实现的内存缓存使用IMemoryCache,但我想要的是缓存应该失效,如果SQL Server 2016中的相应记录被更改。我发现它的一种方式SQLCacheDependency但它不是.Net核心的一部分根据this link.Net核心SQL缓存依赖

对此有何想法?

回答

0

现在这个类没有被迁移到.Net核心,所以你不能轻易管理这样的逻辑。可能它将成为.Net标准2.0的一部分,因此您要么通过CancellationChangeToken执行一些临时解决方案,而要直接执行sql数据库检查(效率非常低)或等待更新。

-1

您可以添加CancellationChangeToken,然后调用取消方法就可以了,这应该从内存中缓存驱逐你的记录。最重要的是,您可以使用PostEvictionDelegate回调(在缓存记录被驱逐后触发其他操作)。 你可以在这里阅读更多:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory

+0

你如何建议调用取消方法?创建一个SQL数据库的轮询? – VMAtm

+0

@VMAtm好吧,轮询是一种方式。但是,考虑到它是一个缓存,应该在实际调用数据库时验证缓存(基于缓存失效超时等等,除非总是验证它是非常重要的) - 如果缓存是未命中,那么将取消方法作为存储库实现。 –