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

Ehache 大缓存元素未过期

祝俊
2023-03-14

我已经在我的缓存上设置了timeToIdle和timeToLive属性。它们分别设置为 10 分钟和 1 小时。

每隔5分钟,我就有一个cron作业调用getKeysSusExiryCheck()对缓存中的元素进行一些处理。我还注册了一个缓存侦听器,以便在元素过期或被驱逐时执行一个过程。

我发现,只有当缓存变满时,元素才会从缓存中移除-尽管调用了getKeysWithExpiryCheck。因为我使用的是Terrocota大内存缓存(4.0.4),所以当缓存过期(并对其执行处理)时,它总是会锁定我的系统,而这些条目本应在TTL或TTI的5分钟内处理。

有人有什么建议吗?

共有1个答案

弘浩瀚
2023-03-14

您是正确的,在元素过期并被访问之前不会驱逐它。看看文档要说什么:

如果某个条目过期但未被访问,并且没有资源限制强制逐出,则过期的条目将保留在原位。

不幸的是,虽然调用getKeysWithExpiryCheck()只会返回未过期的键,但它不会强制逐出过期的元素。不过在这种情况下,大量元素同时被逐出不应该锁定系统。当您的系统锁定时,您是否进行了线程转储或查看了GC日志,以验证是什么导致了所有事情的延迟?

 类似资料:
  • 我有一个名为MyPanel extend JPanel的类,使用GridLayout。每个单元格都包含一个小部件(一个JComboBox、JTextField、JLabel)。 我的主要类extend JFrame使用GridBagLayout。当我将MyPanel添加到其中时,它会占用大量空间(所有窗口都在我的桌面空间外水平移动)。我该怎么修?这是我的主类的构造函数 MyPanel构造函数

  • 我必须集成Spring和ehache,并试图用阻塞缓存模式来实现它 对于共享(默认)和方法,有一个自填充-缓存-范围的选项。你能解释一下有什么区别吗? 还有注释@Cacheable和selfPopulating标志 根据我在一些帖子上读到的 http://groups.google.com/group/ehcache-spring-annotations/browse_thread/thread/

  • 问题内容: 我已经使用了C#Redis缓存。 但我想像这样存储数据 这样一键就可以存储所有客户列表,并且可以轻松地在该列表内搜索,分组,过滤客户数据 欢迎使用或回答 问题答案: 您可以使用ServiceStack.Redis高级IRedisTypedClient Typed API 来管理丰富的POCO类型。 首先为具有以下条件的客户获取类型化的Redis客户端: 这将解决用于管理客户POCO的高

  • 我试图理解为什么在我试图显示从网站获取的项目时会出现错误。我也在使用谷歌chrome浏览器。 这是我代码的其他部分 每当我使用"chromeDriver.FindElement(By.ID(something.link.text))。单击();",它会给出一个错误。我不能显示我提取的数据。 在错误消息中,它显示“OpenQA.Selenium.StaleElementReferenceExcept

  • 我必须打开页面中的所有链接,然后检查是否有文本(“无信息”)。 我用了赛琳娜v3。5和硒v2。53个图书馆。然而,我有一个例外“StaleElementReferenceException”。 我的代码如下: