4 回答
TA贡献1811条经验 获得超5个赞
解决问题的思路首先就不对,什么叫JAVA中……JVM虚拟内存一般只有几百M,为何别人那么多大型系统都能跑起来?
第一,大量的数据是不会考虑放在JVM内存中;
第二,如果需要缓存大量的dto,动态数据(又称过程数据)一般用的是redis;如果是静态,系统启动时就加载的大量配置,一般考虑放ehcache。
第三,由于redis用的是物理内存,不是JVM内存,一般情况下往redis里丢千万级别的记录数基本不影响性能,小小100w条算什么呢。
TA贡献1936条经验 获得超6个赞
内存数据库有现成的redis,高效存取键值对,键设为你的查询条件,值设为你的查询结果转为字符串
查询时先从redis取,没有再查数据库,并且设置redis的过期时间,这种方式需要项目对实时性要求不高,这样你才能用缓存,而且如果你的项目没有明显的热点,即没有某些内容确定会多次被查到,那你缓存就不会命中,添加缓存反而影响你得速度
redis是一种nosql的内存数据库,感兴趣你可以了解一下,优点就是性能强劲
数据查询请求多就把结果缓存下来,你查数据库再快也没有直接把结果从内存读出来快
同样的sql请求只有第一次查数据库,之后通通读内存
或者你干脆借助这种思想,创建一个全局的map对象,然后查询条件作key
,结果作value,就省去了了解redis的过程,把整个数据库装内存不太科学,你有多少条数据啊
TA贡献1873条经验 获得超9个赞
在applicationContext.xml里设置数据源
<!-- 数据源定义,使用Apache DBCP 连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
写入具体值就可以了
applicationContext.xml中还有一段相关的:
<!-- 初始化ibatis配置信息sqlMapClient -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:cn/com/pp/db/SqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
TA贡献1836条经验 获得超4个赞
map由key value键值对组成,具体放多少数据和你的服务器运行时的内存有关系,同时也和你代码中及时清理无效缓存有关系。
一般编写代码中不会去考虑放多少数据问题,除非你数据量超级大对内存要求比较高。这个时候需要对代码和服务器进行优化
添加回答
举报