JAVA内存数据库(内存表) 小弟最近要实现一个效率要求特高的需求,要使用内存数据库(内存表),即将DB中的数据都加载到内存中,内存与DB同步,直接从内存取数据。DB <———> 内存数据库 实时同步DB用的是ORACLE数据库而内存数据库(内存表)这块小弟比较迷糊,以前也没接触过,不知道这种想法可行不?求高人指点一二。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LZ可以考虑用分散DATABASE技术。这个技术的一个实现是memcached。和你的需求比较接近。 缓存是和数据库不同步的,缓存就是解决频繁访问数据库的问题用的所以缓存的数据可以看成历史数据简单点举个例子吧:你查一次数据库 取得数据肯定就是数据库的最新数据吧当有并发达几千人时,很多时候对数据库的访问太频繁,就会占用非常多的CPU甚至让服务器挂了,因此可以用缓存解决缓存就是第一次读取数据时存起来,放进浏览器里,当别人来访问同一个地方时本来应该要查询数据库的,但因为缓存了 所以就直接去缓存的数据减少了和数据库的交互,减轻了服务器的负担,但是如果有人修改了此查询的记录,他取得还是以前的记录,所以缓存可以说是历史数据。LZ的想法,我也期待高手来答 呵呵~~~ 真的不推荐使用缓存!虽然java中有个这个东西!使用起来如果控制不好的话!服务器经常就死掉了!小程序还行!稍微大的要求对服务器配置很高的!一级缓存系统缓存!它根本不知道多少会够!会一直吃内存直到吃到系统崩溃!所以就需要配置二级缓存!如果用二级缓存的话!二级缓存本身就几兆!也一大点!运用不好的话!很麻烦的!如果一定要配置的话!对应一些需要频繁连接的配置!一张两张表就行了!缓存也就是懒加载,这个不容易控制的! <!-- 连接池启动时的初始值 --> <property name="initialSize" value="1" /> <!-- 连接池的最大值 --> <property name="maxActive" value="500" /> <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="maxIdle" value="2" /> <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="1" />这是需要在bean.xml中配置的!======这个也是需要单独配置的<?xml version="1.0" encoding="UTF-8"?><!--defaultCache: 节点为缺省的缓存策略maxElementsInMemory: 内存中最大允许存在的对象数量eternal: 设置缓存中的对象是否永远不过期 overflowToDisk: 把溢出的对象存放到硬盘上timeToIdleSeconds: 指定缓存对象空闲多长时间就过期,过期的对象会被清除掉timeToLiveSeconds: 指定缓存对象总的存活时间diskPersistent: 当jvm结束是是否持久化对象diskExpiryThreadIntervalSeconds: 指定专门用于清除过期对象的监听线程的轮询时间--><ehcache> <diskStore path="D:\cache" /> <defaultCache maxElementsInMemory="1000" eternal="false" overflowToDisk="true" timeToIdleSeconds="120" timeToLiveSeconds="180" diskPersistent="false" diskExpiryThreadIntervalSeconds="60"/> <cache name="com.webshop.VO.Users" maxElementsInMemory="100" eternal="false" overflowToDisk="true" timeToIdleSeconds="300" timeToLiveSeconds="600" diskPersistent="false" /></ehcache> 我要做的是内存数据库,像DB2那样的,但要求与后台的ORACLE实时同步 struts2 action之间 传值中文乱码 如何设置ireport第二列第一行的位置 为什么记事本不支持音标呀 解析xml,还真是见了鬼了. 请问 关于res.sendRedirect 一个servlet和jsp的问题 问下关于js上传附件问题~求高手解答 jsp+bean分页的问题,实在是解决不了了,请大虾快出手!100相送 ??能不能用request.getParameter如何取得用户选择的结果? 如何实现多个excel表格合并下载? java基础 ie 8 event.Client
所以缓存的数据可以看成历史数据
简单点举个例子吧:
你查一次数据库 取得数据肯定就是数据库的最新数据吧
当有并发达几千人时,很多时候对数据库的访问太频繁,就会占用非常多的CPU
甚至让服务器挂了,因此可以用缓存解决
缓存就是第一次读取数据时存起来,放进浏览器里,当别人来访问同一个地方时
本来应该要查询数据库的,但因为缓存了 所以就直接去缓存的数据
减少了和数据库的交互,减轻了服务器的负担,
但是如果有人修改了此查询的记录,他取得还是以前的记录,
所以缓存可以说是历史数据。
LZ的想法,我也期待高手来答 呵呵~~~
虽然java中有个这个东西!
使用起来如果控制不好的话!服务器经常就死掉了!
小程序还行!
稍微大的要求对服务器配置很高的!
一级缓存系统缓存!它根本不知道多少会够!会一直吃内存直到吃到系统崩溃!
所以就需要配置二级缓存!
如果用二级缓存的话!二级缓存本身就几兆!
也一大点!运用不好的话!很麻烦的!如果一定要配置的话!
对应一些需要频繁连接的配置!
一张两张表就行了!
缓存也就是懒加载,这个不容易控制的!
<property name="initialSize" value="1" />
<!-- 连接池的最大值 -->
<property name="maxActive" value="500" />
<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
<property name="maxIdle" value="2" />
<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
<property name="minIdle" value="1" />
这是需要在bean.xml中配置的!
======
这个也是需要单独配置的
<?xml version="1.0" encoding="UTF-8"?>
<!--
defaultCache: 节点为缺省的缓存策略
maxElementsInMemory: 内存中最大允许存在的对象数量
eternal: 设置缓存中的对象是否永远不过期
overflowToDisk: 把溢出的对象存放到硬盘上
timeToIdleSeconds: 指定缓存对象空闲多长时间就过期,过期的对象会被清除掉
timeToLiveSeconds: 指定缓存对象总的存活时间
diskPersistent: 当jvm结束是是否持久化对象
diskExpiryThreadIntervalSeconds: 指定专门用于清除过期对象的监听线程的轮询时间
-->
<ehcache>
<diskStore path="D:\cache" />
<defaultCache maxElementsInMemory="1000" eternal="false"
overflowToDisk="true" timeToIdleSeconds="120"
timeToLiveSeconds="180"
diskPersistent="false" diskExpiryThreadIntervalSeconds="60"/>
<cache name="com.webshop.VO.Users" maxElementsInMemory="100"
eternal="false" overflowToDisk="true"
timeToIdleSeconds="300"
timeToLiveSeconds="600" diskPersistent="false" />
</ehcache>