缓存的那些事

上缓存的一些建议html

1.首先明确是否是必定要上缓存,当前架构的瓶颈在哪里,若瓶颈真是数据库操做上,再继续往下看。redis

2.明确memcached和redis的区别,到底要使用哪一个。前者终究是个缓存,不可能永久保存数据(LRU机制),支持分布式,后者除了缓存的同时也支持把数据持久化到磁盘等,redis要本身去实现分布式缓存(貌似最新版本的已集成),本身去实现一致性hash。由于不知道大家的应用场景,很差说必定要用memcache仍是redis,说不定用mongodb会更好,好比在存储日志方面。mongodb

3.缓存量大但又不常变化的数据,好比评论。shell

4.你的思路是对的,清晰明了,读DB前,先读缓存,若是有直接返回,若是没有再读DB,而后写入缓存层并返回。数据库

5.考虑是否须要主从,读写分离,考虑是否分布式部署,考虑是否后续水平伸缩。缓存

6.想要一劳永逸,后续维护和扩展方便,那就将现有的代码架构优化,按你说的替换数据库组件须要改动大量代码,说明当前架构存在问题。能够利用现有的一些框架,好比SpringMVC,将你的应用层和业务层和数据库层解耦。再上缓存以前把这些作好。架构

7.把读取缓存等操做作成服务组件,对业务层提供服务,业务层对应用层提供服务。框架

8.保留原始数据库组件,优化成服务组件,方便后续业务层灵活调用缓存或者是数据库。分布式


9.不建议一次性全量上缓存,最开始不动核心业务,能够将边缘业务先换成缓存组件,一步步换至核心业务。
10.memcached

刷新内存,以memcached为例,新增,修改和删除操做,通常采用lazy load的策略,即新增时只写入数据库,并不会立刻更新Memcached,而是等到再次读取时才会加载到Memcached中,修改和删除操做也是更新 数据库,而后将Memcached中的数据标记为失效,等待下次读取时再加载。

 

参考:

https://www.zhihu.com/question/27738066

https://coolshell.cn/articles/17416.html

相关文章
相关标签/搜索