Javajava 缓存设计计求助

博客分类:
在做过的很多项目中,存在很多参数类的表,比如说系统参数表,基础配置表等相关的参数表在系统中调用频繁,对不同系统的各项业务进行了关键控制;现有的情况是,每次调用都需要查询数据库,这样实际上是多次调用查询数据库的方式,对数据库而言是一个不小的开销
考虑到参数相关表的特殊性,其查询的次数远远多于增加,修改,删除等更新类操作,现在可以考虑单独设计一个缓存模块,缓存模块只在第一次调用查询接口的时候查询数据库,查询完之后将所有的数据放入缓存中(内存中),以后每次再有查询请求,就不再查询数据库,而是从缓存类中读取数据。而在更新(增加,修改,删除)操作之后,调用缓存类的重载接口重新加载一下数据。
因为这些数据基本上不太会变,可以长期存放在内存中;所以也暂时不需要考虑LRU等复杂的算法,或者考虑缓存数据的有效时间等。
总体来说,一个简单的缓存系统需要考虑的问题
1. 提供WEB管理界面,可以单独或者全部手工重载数据
2. 每次更新(增加,修改,删除操作)都需要调用缓存类重载数据
3. 普通访问直接调用缓存类
4. 多服务器的情况 (如果只是单服务器不需要考虑)
可以考虑的方式:
1) 需要设计一个轮询机制,后台自动发起查找后台数据(建立缓存参数表)是否有过变更,有变更就在此刷新;
2) 采用JMS,RMI等远程调用的方式,同步更新
浏览: 413310 次
来自: 杭州
我艹,不好使,大骗子
误人子弟,不会就不要乱发
策略工厂实现Spring的ApplicationContext ...
我也一直不漏的看完了,感触颇深,还是要多花花时间陪陪父母
认真的看完了,每一位母亲都是伟大的,她为自己的子女,家庭付出的 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'51CTO旗下网站
5个强大的Java分布式缓存框架推荐
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦。
作者:佚名来源:码农网| 10:12
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦。本文主要是分享了5个常用的Java分布式缓存框架,这些缓存框架支持多台服务器的缓存读写功能,可以让你的缓存系统更容易扩展。
1、&& Java分布式缓存框架
Ehcache是一个Java实现的开源分布式缓存框架,EhCache 可以有效地减轻数据库的负载,可以让数据保存在不同服务器的内存中,在需要数据的时候可以快速存取。同时EhCache 扩展非常简单,官方提供的Cache配置方式有好几种。你可以通过声明配置、在xml中配置、在程序里配置或者调用构造方法时传入不同的参数。
官方网站:http://ehcache.org/
使用教程:http://www.codeceo.com/article/java-ehcache.html
2、&& 高性能Java分布式缓存系统
Cacheonix同样也是一个基于Java的分布式集群缓存系统,它同样可以帮助你实现分布式缓存的部署。
官方网站:http://www.cacheonix.com/
使用教程:http://www.codeceo.com/article/java-cacheonix.html
3、&& 轻量级Android缓存框架
ASimpleCache是一款基于Android的轻量级缓存框架,它只有一个Java文件,ASimpleCache基本可以缓存常用的Android对象,包括普通字符串、JSON对象、经过序列化的Java对象、字节数组等。
官方网站:https://github.com/yangfuhai/ASimpleCache
使用教程:http://www.codeceo.com/article/asimplecache-android-cache.html
4、&& 基于事物的Java缓存框架
JBoss Cache是一款基于Java的事务处理缓存系统,它的目标是构建一个以Java框架为基础的集群解决方案,可以是服务器应用,也可以是Java SE应用。
官方网站:http://jbosscache.jboss.org/
使用教程:http://www.codeceo.com/article/jboss-cache-java.html
5、&& 基于键-值(key-value)的缓存框架
Voldemort是一款基于Java开发的分布式键-值缓存系统,像一样,Voldemort同样支持多台服务器之间的缓存同步,以增强系统的可靠性和读取性能。
官方网站:http://www.project-voldemort.com/voldemort/
使用教程:http://www.codeceo.com/article/voldemort-java-key-value-catch.html
各位如果还有更好的分布式Java缓存框架,欢迎在评论中留言推荐,本文将持续进行更新。【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条头条头条头条
24H热文一周话题本月最赞
讲师:17562人学习过
讲师:82830人学习过
讲师:12981人学习过
精选博文论坛热帖下载排行
本书是作者根据十年网站营销经验,特别是搜索引擎优化(SEO)实现营销方面的技术和实践总结。本书帮助读者建立搜索营销的概念,分析搜索营...
订阅51CTO邮刊他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)210被浏览8,227分享邀请回答253 条评论分享收藏感谢收起1添加评论分享收藏感谢收起扫码下载官方App
"Java面向对象-包装类中的缓存设计"的笔记
什么是学习笔记?
你在学习中想写的批注、摘抄及随感。
网易公司(163.com)旗下实用技能学习平台。与优秀讲师、专业机构、院校合作,为您提供海量优质课程,以及创新的在线学习体验,帮助您获得全新的个人发展和能力提升。
关注我们:
& 网易公司 版权所有
Java面向对象-包装类中的缓存设计, 包装类的缓存设计(享元模式),本质就是缓存设计:
Byte,Short,Integer,Long:缓存[-128,127]区间的数据;
Character:缓存[0,127]区间的数据.
class CacheDemo{
public static void main(String[] args){
Integer i1=new Integer(123);
Integer i2=new Integer(123);
System.out.println(i1==i2);//false
Integer i3=Integer.valueOf(123);
Integer i4=Integer.valueOf(123);
System.out.println(i3==i4);//true
Integer i5=123;
Integer i6=123;
System.out.println(i5==i6);//true
System.out.println(&---------------------------&);
Integer i11=new Integer(250);
Integer i21=new Integer(250);
System.out.println(i1==i2);//false
Integer i31=Integer.valueOf(250);
Integer i41=Integer.valueOf(250);
System.out.println(i3==i4);//false
Integer i51=250;
Integer i61=250;
System.out.println(i5==i6);//false
上述结果怎么回事?
----在[-128,127]之间,就获取缓存中的数据,否则就进行new Integer操作
----自动装箱进行的就是Integer.valueOf()操作
在包装类中,比较值用equals比较.包装类型equals方法的底层使用了拆箱操作

我要回帖

更多关于 java 缓存设计 的文章

 

随机推荐