Java中怎么把数据库中的表做成定时任务,存入缓存,减轻频繁直查数据库时,数据库的压力

Java中怎么把数据库中的表做成定时任务,存入缓存,减轻频繁直查数据库时,数据库的压力,第1张

根据你的想法,建议将两种方式整合下,建议如下设置:

接根据业务层的需要,把频繁使用的多个表数据进行整合,并利用视图的方式进行访问,这样既能减少数据表的压力,也能保持数据的准确性;

根据向系统设定场景,将经常使用到的数据存放在缓存中,缓存建议使用radis等非关系型数据库

根据数据量确定,数据量比较大的,可以使用中间表等方式,如果数据量小而多的,放在缓存中最好,提高命中率。

内存数据库有现成的redis,高效存取键值对,键设为你的查询条件,值设为你的查询结果转为字符串

查询时先从redis取,没有再查数据库,并且设置redis的过期时间,这种方式需要项目对实时性要求不高,这样你才能用缓存,而且如果你的项目没有明显的热点,即没有某些内容确定会多次被查到,那你缓存就不会命中,添加缓存反而影响你得速度

redis是一种nosql的内存数据库,感兴趣你可以了解一下,优点就是性能强劲

数据查询请求多就把结果缓存下来,你查数据库再快也没有直接把结果从内存读出来快

同样的sql请求只有第一次查数据库,之后通通读内存

或者你干脆借助这种思想,创建一个全局的map对象,然后查询条件作key

,结果作value,就省去了了解redis的过程,把整个数据库装内存不太科学,你有多少条数据啊

你要实现的这个可能跟SpringMvc的关系不是很大。

你要达到的目的其实就是在jvm启动的时候把数据库数据加载一份到内存,一个静态变量和一个静态初始化块就可以搞定你的问题,这两者都是在类加载的时候初始化一次,像前面回答的一样,你可以用一个HashMap搞定。稍微具体来说,一个静态变量

public static final  Map<key,value>cache=new  HashMap<key,value>()

static {

cache=请求数据库 *** 作

}

key你自己加,String还是int都行,value是你数据库的结构,可以写个实体。获取的时候直接cache.get(key)就可以了。

java如何从数据库读取数据并写入txt文件:

将数据查询出来放在list中,然后写入文件。

给你个写入的类,查询数据自己如果能搞定最好了。

FileWriter fileWriter=new FileWriter("c:\\Result.txt")

int [] a=new int[]{11112,222,333,444,555,666}

for (int i = 0i <a.lengthi++) {

fileWriter.write(String.valueOf(a[i])+" ")

}

fileWriter.flush()

fileWriter.close()

上面例子中的a也可以是list。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9618419.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存