今天小弟突然有一个比较奇特的想法。我是这样想的。用户只能对数据库进项 insert 和 update 但是不能select 所有的select 都是有服务器每秒查询后,放在缓存里面,有效时间是1.5秒或者其它一个能接受的范围。用户其实每次都是看到缓存里面的东西。虽然这样有了零点几秒的延迟,但是少了好多服务器的压力。数据并不是一直都在变的,在没有insert 和 update的时候数据是不变的。影响不大。还望各位大神来指点一下这个方案能不能实行。
这种想法你不是第一个提出的!
我记得hibernate的缓存机制就有这点吧。这个方案对于实时性数据的需求来说是不适合的,而缓存每1.5s或者其他时间这个对于按需求取数据的方案也是不适合的,相反还增加了服务器负荷。
比如说每5秒查一下,用户用不能查,那只能所有数据存内存中,每次得多少数据,需要多大内存。一个网站假如有1000W条记录,这1000W条记录真的是访问都均衡的,坑定不是啦,是有热点数据的。
关于缓存的做法是有的,比如hibernate,mybatis等都是有二级缓存一级缓存的,但是不会缓存全部的。
一般缓存前100-200条