缓存层如何设计

马克-to-win:我们前面讲过了n-tier架构。在我们的程序当中,还可以设计一个缓存层。在去访问数据库之前,先看看缓存层中有没有数据,如果没有的话,从数据库取完数据回来,一定要放在缓存层当中一份,下次就不用去数据库了。马克-to-win:如果对数据库当中,某个数据更新了,同时一定要记住也更新一下缓存当中的数据。这样的话,既保证了缓存的数据是最新的,也保证了将来查询时不用去查数据库,减轻了对数据库的压力。这里有些问题,问题1,如果除了你的项目,还有其他的地方可以更改数据库,怎么办?可以做一个守护线程,发现某个表的版本变了,就重新把表的数据加载回你的缓存。问题2,对于条件查询,如何处理缓存?比如30元到50元的衣服数据的第二页。大家通常的做法是,把整个衣服表都加载到缓存中,无非就是一个 List,之后整个做个遍历,把符合条件的选出来。为什么要整个加载?因为别人还有可能要查20到40块钱的第五页的数据。问题3,项目a处需要看表的 123列,b处需要看表的456列,缓存时就直接把123456列作为一个表缓存起来,供两处使用。马克-to-win:顺便说一句,缓存也可以缓存图片。数据库和图片服务器,可以认为是大的仓库,什么都能找到,而缓存可以看做是前端的商店,客户经常要买的东西就存一部分在商店,这样可以提高效率。如果商店没有相应的商品,也不用着急,因为我们后面的仓库肯定有。 马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。