EFCoreSecondLevelCacheInterceptor手动失效

问题描述 投票:0回答:1

我试图向图书馆的作者提出这个问题,但他假设了一些不适合我的情况的事情,之后他关闭了线程,没有让我解释我的问题实际上是什么。粗鲁的恕我直言...

问题与这部分相关:https://github.com/VahidN/EFCoreSecondLevelCacheInterceptor?tab=readme-ov-file#3--setting-up-the-cache-invalidation

我的服务有时(很少)更改数据。我还有其他服务以只读方式读取相同的数据,并在内存中为整个 DbContext 进行自己的缓存。它们尽可能长时间地将数据保留在缓存中(滑动)。但在极少数情况下,当数据发生更改时,我需要在这些只读服务中使该数据无效。手动,由于写入和读取上下文不仅不相同,而且位于不同的主机上,因此自动失效显然不会起作用。表明数据从一项服务更改为只读服务的事实已设置,一些延迟也不是问题。但目前,我只能一次性使整个缓存失效。

拦截器有一些手动失效的机制。但描述很模糊。甚至不清楚我想要的是否可能实现。

我只需要使与特定表相关的条目无效。

second-level-cache ef-core-8.0
1个回答
0
投票

根据一些挖掘和调试的结果,似乎

InvalidateCacheDependencies
方法完全符合我的需要,尽管有一些警告:内部存储通过添加某些前缀来跟踪缓存查询中使用的表原因,但没有添加架构。这意味着在更多模式中具有相同的表名可能会出现问题。如果发现传递给该方法的任何带前缀的表名称与缓存的查询相关,则该条目无效。这意味着不可能出现细粒度的失效。

© www.soinside.com 2019 - 2024. All rights reserved.