hvr*_*hal 11 java jboss caching jboss-cache
我正在尝试为仅在短时间内相关的数据创建jboss-cache.在那之后,应该丢弃数据并释放相应的存储器.
缓存的组织方式如下:
/my_region
/session_1
/datanode_1
attribute1: value1
/datanode_2
attribute2: value2
/session_2
...
/session_3
...
...
...
Run Code Online (Sandbox Code Playgroud)
我的驱逐策略配置如下所示:
<attribute name="EvictionPolicyClass">org.jboss.cache.eviction.LRUPolicy</attribute>
<attribute name="EvictionPolicyConfig">
<config>
<attribute name="wakeUpIntervalSeconds">5</attribute>
<region name="/my_region">
<attribute name="maxNodes">100</attribute>
<attribute name="timeToLiveSeconds">1800</attribute>
</region>
</config>
</attribute>
Run Code Online (Sandbox Code Playgroud)
这样做:当/my_region有超过100个孩子时,最近最少使用的孩子被驱逐,以便该地区缩小回100个孩子.
与问题LRUPolicy是,当退出的节点有孩子,他们没有完全消除,但标有jboss:internal:uninitialized: null代替.此行为对于缓存的实体有意义,以避免从持久存储中获取它们,但它不适用于缓存未持久且永远不会再次访问的实体.
因此,为了删除节点,我创建了一个扩展,LRUPolicy用删除覆盖evict.
@Override
public void evict(Fqn fqn) throws Exception {
cache_.remove(fqn);
}
Run Code Online (Sandbox Code Playgroud)
这个新策略不会joss:internal:uninitialized: null落后,但它会在到达/my_region时删除节点maxNodes.当我放LRUPolicy回去的时候,我注意到区域节点本身实际上被驱逐并得到了unitialized标签,但最近使用的100个孩子仍然存在.
如何防止该地区被驱逐呢?有没有更好的方法去除而不是驱逐而不将驱逐与过期分开?
我正在使用jboss-cache版本1.3.0.SP4.
你看过JBoss-Cache bugs存储库了吗?
编辑:
看看这个JBoss-Cache错误,看起来非常相关:
https://jira.jboss.org/jira/browse/JBCACHE-921
已在1.4.1.SP1中修复
| 归档时间: |
|
| 查看次数: |
1522 次 |
| 最近记录: |