缓存数据为了最大限度地减少我需要某种形式的高速缓存来存储数据对数据库查询的次数。我现在的做法是一个散列表(以字符串作为键,整数作为值)。但我希望能够检测数据库中的更新并替换我的“缓存”中的值。我正在寻找的东西,使我的存储对在预设的时间范围内无效,大概10-15分钟。我将如何实现?在我可以使用的标准Java包中有什么东西?更新在哈希表中
更新在哈希表中
回答
您可以使用现有的解决方案(见前面的回复)
或者,如果你想一个挑战,让自己轻松缓存类(不推荐用于生产项目,但这是一个很好的学习经验。
你将需要至少3名成员
存储为散列表对象A的高速缓存数据,
下一高速缓冲存储器期满日期
缓存到期间隔通过构造方法设置。
然后,只需有公开数据的获取方法,验证缓存过期状态:
如果没有过期,呼叫hastable的存取;
如果期满,第一呼叫“数据加载”方法,该方法也被称为在构造函数中预先填充,然后调用哈希表的存取。
对于甚至更冷的缓存类(我已经实现了它在Perl在我的工作),你可以有更多的功能,可以实现:
单独的每键缓存过期(加上总体缓存过期总数)
自动,半自动和单次数据重新加载(例如,立即重新加载整个缓存;重新加载由某个预定义查询定义的一批数据,或重新加载单个数据元素单件邮件) 。后一种方法是非常有用的,当你的缓存有完全相同的钥匙许多命中 - 这样你就不需要每次3个凯茨说总是访问到期重装宇宙。
我会使用一些现有的解决方案(有很多缓存框架)。 ehcache是伟大的,它可以重置给定的时间跨度值和我打赌它可以做更多的事情(我只使用了)
你可以使用一个缓存框架像OSCache,EHCache,JBoss Cache,JCS ......如果你正在寻找的东西,遵循“标准”,选择支持的JCache标准接口(使用javax的框架。缓存)又名JSR-107。
对于简单的需求,如你所描述的,我会看EHCache或OSCache(我不是说它们是基本的,但它们很容易入手),它们都支持基于时间的到期。
如果我不得不选择一种解决方案,我会推荐Ehcache,它有我的偏好,特别是现在它已经加入了兵马俑。而为了记录,Ehcache通过net.sf.cache.jcache package
提供了JSR107的a preview implementation。
JSR-107规范是一个很好的阅读。它真正处理我的问题。 – matpe 2009-09-20 07:04:57
- 1. c中的哈希表更新值
- 2. 如何更新ABAP哈希表
- 3. 哈希表映射 - 更新值
- 4. 序列化哈希表未更新
- 5. 更新和在哈希表中创建新的元素
- 6. 哈希表中的搜索哈希
- 7. 如何在powershell中的哈希表中添加哈希表?
- 8. 更新窗口哈希(在URL)
- 9. 遍历和更新散列哈希的哈希
- 10. 哈希表vs哈希列表与哈希树?
- 11. 形式的哈希表 - 在Java中的<key,哈希表>
- 12. 返回在哈希表中
- 13. 哈希表在Java
- 14. 财产在哈希表2个物体的进入一个新的哈希表
- 15. 如何在哈希中存储哈希哈希?
- 16. 哈希打印表哈希perl
- 17. 在javascript中构建哈希表和完美的哈希函数
- 18. 如何更新循环中的C#哈希表?
- 19. PowerShell更新foreach循环中的哈希表值?
- 20. 更新哈希与轨道4
- 21. 强制厨师更新哈希属性
- 22. backbone.js - 调用router.navigate但仅更新哈希?
- 23. MD5哈希更快
- 24. 我们可以把哈希表放在哈希表里面吗?
- 25. 访问哈希表中的值相同的哈希表在PowerShell中
- 26. 在javascript/angularjs中更新哈希中的键的现有值
- 27. F#中的哈希链接和.net中的弱哈希表
- 28. 在Python创建哈希表
- 29. 链接在哈希表
- 30. 实现在哈希表
现在这将是一次学习经历,但是当我需要一个真正的项目时,我会考虑Ehcahce和其他人。这一次规范并没有要求这个特定的功能 - 这只是我想尝试和做的事情(但从来没有公开)。 – matpe 2009-09-20 06:13:50