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

Ehcache更新元素

申屠宗清
2023-03-14

我使用下面的代码对缓存中的元素进行更新。

Cache cache = manager.getCache("myCache");
cache.put(new Element("k1", "v1"));
//updates "k1"
cache.put(new Element("k1", "v2"));

这是线程安全的还是我们需要做任何超出这一点的事情来保证线程安全。同样从性能角度来看,每次更新都会产生一个新元素。这是一个好方法吗?

问候

共有1个答案

宦高岑
2023-03-14

这是更新缓存项的基本API:用更新后的值对同一个键执行put。为此,您确实需要创建一个新的元素。

关于线程安全,Ehcache操作在设计上是线程安全的。

但是我不确定你对线程安全的背景和要求是什么。

没有什么可以阻止另一个线程在处理的任何时候更新同一个键,包括在两个put之间。如果要保证第二次put仅在其值仍然为v1时更新键k1,则需要查看提供的比较和交换操作或显式锁定。

 类似资料:
  • 我想知道ehcache是否有办法检测数据库更新/插入(spring/java,hibernate web应用程序),并使用数据库中的当前(最新)数据刷新其缓存。如果没有,检测数据库更新的最佳方法是什么,以保持与缓存和数据库之间的数据同步?

  • 我从缓存中读取数据。我正在使用ehcache。每次插入操作后,我都需要刷新缓存数据。如何使用注释?或者其他方式? ehcache。xml 存储库类: 公共接口NodeRepository扩展了JpaRepository{

  • 我有以下架构 我想为创建静态方法,以便根据给定的更新 我的情况与建议的复制相似,但不相同,因为那里的家伙知道所有的,而我不知道。

  • 问题内容: 我将JTree与TreeNode一起使用,它扩展了DefaultMutableTreeNode。当我添加新节点时,我无法更新JTree。任何帮助将不胜感激 问题答案: 仅添加到节点还不够,需要通知树。正确的方法是让模型负责添加/删除节点,因为它将在途中正确通知Tree。 如果使用DefaultTreeModel(如果尚未创建自己的TreeModel,则应该是JTree中使用的那个),则

  • 我想结合内存和磁盘缓存使用EhCache。当内存已满时,EhCache应将新元素移动到磁盘。e、 g.我在ehCache内存存储中有100个元素,并尝试放入第101个元素,如果内存已满,则将第101个单元放入磁盘,而不是第一个单元。 你能让我知道实现这一点的缓存配置吗?

  • *notifyelementevicated[name=mycache status=STATUS_ALIVE evertion=false overflowToDisk=true maxEntriesLocalHeap=0 maxEntriesLocalDisk=0 memoryStoreEvictionPolicy=LFU timeToIdleSeconds=0 persistence=LOC