说到缓存,我想你们跟我同样都很兴奋,当咱们遭遇网站性能瓶颈的时候,缓存是一剂强心针,也是一粒紧急妈富隆,从而在优化网站redis
性能方面冠上了第必定律的帽子,咱们前年在作淘应用的时候,就遭遇了性能瓶颈,短期内采用缓存紧急优化,给咱们大优化以前争取了算法
宝贵的时间。sql
一:缓存的种类mongodb
要说缓存有多少种,太多了,好比浏览器缓存,文件缓存,片断缓存,数据库缓存等等,合理利用这些缓存则能大幅度的提升系统性能,数据库
利用很差反而会偷鸡不成蚀把米,给服务器形成巨大的压力,因此这里就存在一个缓存的使用原则的问题。浏览器
二:合理的使用缓存缓存
1. 读写小于10:1的状况下,不适合用缓存,咱们用缓存的目的就是想分摊下数据库的压力以及利用内存来提速性能,若是读写差很少,或者服务器
压根就没读过,这样的死数据就会形成内存资源的浪费。架构
2. 既然是缓存,就注定了它的资源是有限的,宝贵的,也就注定了咱们必须合理利用它的内存空间,也就被迫的让咱们清楚的认识到热点数据,nosql
不易修改的应该放在缓存,反之不宜放。
3. 大公司在缓存方面作的好的地方就是在一个“控”字上,他们会为缓存专门作一套“缓存系统”,当系统预加载的时候,同时也充当内存数据库
使用,将这些元数据加载到缓存系统中,好比“县市区”,“分类信息”等等做为预热数据。
三:分布式缓存
通常状况下,会有两种形式,第一种就是主从复制的模式,第二种就是分片的模式。
1:主从复制模式
这种模式曾今在项目中也用过,就是一分内存,多处备份,当其中某一个缓存内容中的数据有变化时,会及时通知其余机器进行缓存更新
或清除,这种模式的缺点在于比较容易受制于单台机器的内存限制,优势在于用心跳机制及时用另外一台缓存机器顶替,那个时候咱们使用120G
的大内存,得益于项目业务规模的限制,不然当机器内存爆满的时候就比较尴尬了,因此作大型网站仍是谨慎使用吧,毕竟这个也是咱们曾今作
了一些为了提高性能的尝试。
2:分片的模式
这种模式在大型网站中仍是被大量使用的,它的特色就是能够把一大坨数据经过必定的算法和配置分摊到集群中的若干台机器上,若是集群中
的某一台机器挂了,不要紧,只会影响到该台机器中的数据,对数据库不会形成很大的影响。一个典型的应用就是memcache,memcache是一
个很是简单,实用,高效的分布式缓存架构,其实memcache最值得一提的就是“路由算法的一致性hash”技术使得咱们的memcache集群能够
自由伸缩,不过如今已经有不少的nosql产品,好比redis,couchdb,mongodb等等,让咱们在这个世界上有了更多的选择吧。
最近看到园子里面有不少抱怨声,不要紧,若是以为本身屈才了,欢迎来携程试一试,只有你达不到的能力,没有给不起你的薪资。