java怎么将数据库的数据做缓存,方便查找。
最近做一个项目,需要平凡的在一张表根据不同条件查找数据,表中数据非常大。本人想在项目启动的时候将表里面的数据读入内存,然后就直接在内存中查找。请问该用什么结构记录这些数据...
最近做一个项目,需要平凡的在一张表根据不同条件查找数据,表中数据非常大。本人想在项目启动的时候将表里面的数据读入内存,然后就直接在内存中查找。请问该用什么结构记录这些数据。如果存入这些数据,又该根据不同的条件去查找数据,就像写sql的where条件一样去查找数据。求大神指教。
展开
3个回答
展开全部
内存数据库有现成的redis,高效存取键值对,键设为你的查询条件,值设为你的查询结果转为字符串
查询时先从redis取,没有再查数据库,并且设置redis的过期时间,这种方式需要项目对实时性要求不高,这样你才能用缓存,而且如果你的项目没有明显的热点,即没有某些内容确定会多次被查到,那你缓存就不会命中,添加缓存反而影响你得速度
redis是一种nosql的内存数据库,感兴趣你可以了解一下,优点就是性能强劲
数据查询请求多就把结果缓存下来,你查数据库再快也没有直接把结果从内存读出来快
同样的sql请求只有第一次查数据库,之后通通读内存
或者你干脆借助这种思想,创建一个全局的map对象,然后查询条件作key
,结果作value,就省去了了解redis的过程,把整个数据库装内存不太科学,你有多少条数据啊
查询时先从redis取,没有再查数据库,并且设置redis的过期时间,这种方式需要项目对实时性要求不高,这样你才能用缓存,而且如果你的项目没有明显的热点,即没有某些内容确定会多次被查到,那你缓存就不会命中,添加缓存反而影响你得速度
redis是一种nosql的内存数据库,感兴趣你可以了解一下,优点就是性能强劲
数据查询请求多就把结果缓存下来,你查数据库再快也没有直接把结果从内存读出来快
同样的sql请求只有第一次查数据库,之后通通读内存
或者你干脆借助这种思想,创建一个全局的map对象,然后查询条件作key
,结果作value,就省去了了解redis的过程,把整个数据库装内存不太科学,你有多少条数据啊
更多追问追答
追问
一千多条,以后说不定上万条。这个做起来太恼火了。
追答
一千多条数据很少啊,你不用缓存出现性能瓶颈了,你测过了?
展开全部
你的数据非常大,那你写入内存会不会比较占资源,为什么不用异步刷新,让它显示不部分再慢慢加载
更多追问追答
追问
所有的数据加载完应该只有几十M,最主要是对数据库的访问太平凡,可能1秒中有上千次,所以想做缓存。这和异步加载没关系
追答
这个问题以前没做过,帮不了你了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-07-05
展开全部
这么频繁还用数据库干啥,就用内存得了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询