当前位置: 首页 > 知识库问答 >
问题:

Infinispan 8-cache.clear()-如何正确理解javadoc?

蔚元明
2023-03-14

在infinispan 8.2.5中。最后,我有一个用例,我想从缓存中逐出/清除所有条目。我正在呼叫cache。清除()。Javadoc说:

作废组织。英菲尼斯潘。隐藏物清除()

从缓存中删除所有映射。

注意:除非您可以保证不会同时运行其他调用,否则绝不应在生产中调用此函数。

如果缓存是事务性的,它将不会与事务交互。

由映射中的:clear()指定

这是否意味着“没有其他对cache.clear()的调用”?或者它是否意味着“根本没有对底层缓存的其他调用”?所以没有缓存。放置和缓存。是否同时获取?

清除缓存(新数据进来)是一个常见的用例。我用错方法了吗?有其他方法可以从无限缓存中驱逐所有项目吗?

编辑:我正在无效模式下运行缓存。clear()操作是使所有节点中的所有条目无效,还是仅使本地节点中的所有条目无效?

共有1个答案

鱼意远
2023-03-14

这意味着“无法运行其他写入操作”。清除()可能会损坏并发写操作(它可以应用于某些节点,但在另一个节点中丢失),因为它不会尝试获取任何锁定。

如果担心并发写入,可以使用流或迭代器。例如:

cache.keySet().stream().forEach(BasicCache::remove);

for (Iterator<K> it = cache.keySet().iterator(); it.hasNext(); ) {
    it.next();
    it.remove();
}

应该做到这一点。

 类似资料:
  • 问题内容: 以上失败,并出现AttributeError异常。我了解Python在调用时不保证 “全局变量”(在这种情况下是否存在成员数据)的存在。如果是这种情况,并且这是导致异常的原因,那么如何确保对象正确销毁? 问题答案: 我建议使用Python的语句来管理需要清理的资源。使用显式语句的问题在于,你必须担心人们会忘记完全调用它,或者忘记将其放在块中以防止发生异常时发生资源泄漏。 要使用该语句,

  • 问题内容: Java的I / O类,,,和他们的不同子类中都有一个可抛出的方法。 对于处理此类异常的正确方法是否存在共识? 我经常看到建议,只是默默地忽略它们,但这是错误的,至少在打开用于写的资源的情况下,关闭文件时出现问题可能意味着无法写入/发送未刷新的数据。 另一方面,在阅读资源时,我还不清楚为什么会抛出异常以及如何处理。 那么有什么标准建议吗? 问题答案: 记录下来。 您实际上不能 做任何事

  • 在我的REST API中,我有一个过滤器,该过滤器检查每个请求,以查看令牌是否是原样。下面是代码。 当用户登录到应用程序时,将调用上述代码。但是,令牌将在60分钟内过期。我知道,在令牌过期后,要么我必须带用户返回登录屏幕,要么刷新令牌。我把这里和这里的建议都看了一遍 但我不明白以下几点。 如何分配并将此令牌发送回用户?当前,当用户登录时,他将获得令牌并将其保存在一个变量中。为了使刷新的令牌工作,我

  • 为什么我们的域名不能被解析 最近经常有朋友在使用一个域名地址时发现无法被正确解析,比如在使用 Mysql 实例时某些云会给一个私有的域名搭配自有的 nameserver 使用 local client = mysql:new() client:connect({ host = "rdsmxxxxxx.mysql.rds.xxxx.com", port = 3306, dat

  • 将 REST POST 请求从 Angular 前端发送到 Java 后端后,后端接收请求并计算答案。但是,在前端,请求不会显示在日志中,而是给出解析错误。 有一个来自Angularendpoint的静息调用,即: 它在Javaendpoint中接收,该endpoint是: 在后端,日志显示请求到达并且字符串已正确计算。字符串是字母数字组合,没有特殊字符。在前端,chrome 日志不显示请求的痕迹

  • 问题内容: 昨天我对一个问题的回答之一是建议我确保我的数据库可以正确处理UTF-8字符。我该如何使用MySQL? 问题答案: 更新: 简短答案-您几乎应该始终使用字符集和排序规则。 更改数据库: 看到: 亚伦对此答案的评论如何使MySQL正确处理UTF-8 utf8_general_ci和utf8_unicode_ci有什么区别 转换指南:https : //dev.mysql.com/doc/r