问题标签 [cache-invalidation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
41 浏览

infinispan - Infinispan 失效缓存在新密钥上失效

我们有一个带有 infinispan (v 9.4.18) 失效缓存的两个主动/主动节点 Wildfly 19 集群配置。

根据 infinispan 文档,当节点 1 上的缓存值更改时,会从节点 1 向节点 2 发送 InvalidateCommand,从而使节点 2 缓存中的键条目无效/删除。

我注意到的是 InvalidateCommand 甚至在一个新的密钥上发送。

在我们的应用程序中,如果在缓存中找不到键,则会从数据库中加载一个值并放入缓存中。由于两台服务器都处于活动状态,我得到以下永无止境的场景:

对节点 1 的请求 > 在节点 1 缓存上找不到密钥 > 从数据库加载值并放入节点 1 缓存 > 在节点 2 上的密钥无效 对
节点 2 的请求 > 在节点 2 缓存上找不到密钥 > 从数据库加载值并放入节点 2 缓存 >节点 1 上的密钥无效 对节点 1
的请求 > 在节点 1 缓存上找不到密钥 > 从数据库加载值并放入节点 1 缓存 > 节点 2 上的密钥无效
,依此类推。

在这种情况下,我会不断地使缓存失效,即使数据从未更改过。我希望在新的密钥放置上不会发送无效命令。

否则失效缓存的实际用途是什么,如果在接收到失效命令后放置相同的键将再次触发失效。

谢谢

0 投票
2 回答
52 浏览

x86 - L1 缓存中的缓存失效

假设一条带有变量 X 的缓存行同时上传到 CPU0 的 L1d 和 CPU1 的 L1d。从CPU0改变X的值后,当CPU1的L1d缓存线失效时,如果CPU0有一条带X的缓存线,CPU1就不能从CPU0的L1d缓存中复制变量X吗?即使不是这种情况,我也想知道是否存在 CPU0 引入 CPU1' 的情况

0 投票
2 回答
31 浏览

reactjs - React Query:InvalidateQuery 无法更新用户列表

我有一个简单的应用程序,它有一个表单和列表。目前,我正在使用查询 client.InvalidateQueries 在提交表单后更新用户列表。正如文档所说,使用 InvalidateQuery 将触发重新获取,但不知何故,在添加用户后我没有看到列表的更新。我错过了什么吗?

添加用户

用户列表

0 投票
0 回答
35 浏览

caching - 为什么我们需要硬件支持和软件指令来使缓存失效?

以 Arm 为例,它具有对自动缓存失效的硬件支持,如以下 URL 所述: https ://developer.arm.com/documentation/den0024/a/Multi-core-processors/Multi-core-cache-coherency集群内

它还具有手动执行相同操作的软件说明,例如DCSYS

我的问题是,如果这些指令已经被硬件自动覆盖,为什么以及何时需要运行这些指令?

这个问题适用于同时支持软件和硬件缓存失效的任何其他架构。