缓存

mtv0199 2011-05-17 06:37:43
要做一个本地缓存,需求如下:

需要缓存一个list,每次http请求的时候读取的都是list里面的值,缓存定时(每天晚上10点)去查询数据库,更新这个list。

如何实现?最好有详细代码参考。
...全文
200 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
q1531 2011-05-18
  • 打赏
  • 举报
回复
主要还是看具体的应用。如果按你的说法那搞个线程定时读取数据放到一个static List中就行了。
mtv0199 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zn85600301 的回复:]

这样看你的数据量大不大

不大的话在自己系统内定义一个全局的hashMap 然后将缓存的值存进去

list每次取值都需要遍历整个容器 map定义好KEY就方便取了

[/Quote]
我还是不太明白为什么要用map,arraylist不是实现了RandomAccess接口么,可以随机读取。
Joop_Song 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mtv0199 的回复:]
引用 1 楼 healer_kx 的回复:

那最好不用List,而是用HashMap了。~

为什么呢?
例如:页面需要展现一些user数据,缓存从数据库里面读取所有user放入一个list里面。你是说,不用list,用hashmap?
[/Quote]

用hashmap的键值对存储数据,键值存:IP或者User名,对应的value存:用户的信息,这样会更好读取数据,比list好多了。
chosen0ne 2011-05-18
  • 打赏
  • 举报
回复
如果用memcached,就不是本地缓存了。。。。

用HashMap比list时间复杂度要小。HashMap是O(1)而list是O(n),肯定是越快越好,应该用HashMap
如果存入的元素是要排好序的,TreeMap会把Key进行排序
zn85600301 2011-05-18
  • 打赏
  • 举报
回复
这样看你的数据量大不大

不大的话在自己系统内定义一个全局的hashMap 然后将缓存的值存进去

list每次取值都需要遍历整个容器 map定义好KEY就方便取了

如果数据量大 可以考虑memcached

每晚10点 你用spring的quartz 写个定时任务很容易
mtv0199 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 healer_kx 的回复:]

嗯,3楼也肯定了我的说法,。


HashMap cache = new HashMap();


cache.put("image1", image1);
cache.put("image2", image2);
cache.put("image3", image3);
cache.put("image4", image4);


等用到的时候,缓存就发挥作用了。

……
[/Quote]
我用的list是排好序的,页面有分页,每次从list里面取值。
mtv0199 2011-05-17
  • 打赏
  • 举报
回复
还有高手没?
healer_kx 2011-05-17
  • 打赏
  • 举报
回复
嗯,3楼也肯定了我的说法,。


HashMap cache = new HashMap();


cache.put("image1", image1);
cache.put("image2", image2);
cache.put("image3", image3);
cache.put("image4", image4);


等用到的时候,缓存就发挥作用了。

Image img = (Image)cache.get(whichImage);
img用就是了,如果是null再重新加载即可。
安心逍遥 2011-05-17
  • 打赏
  • 举报
回复
缓存里要用HashMap,键值对,这样好取,好用
list数据会不好操作,而且从缓存中得到的对象本身就是一个map,用list还要转换
mtv0199 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]

那最好不用List,而是用HashMap了。~
[/Quote]
为什么呢?
例如:页面需要展现一些user数据,缓存从数据库里面读取所有user放入一个list里面。你是说,不用list,用hashmap?
healer_kx 2011-05-17
  • 打赏
  • 举报
回复
那最好不用List,而是用HashMap了。~

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧