二、NOSQL之Memcached缓存服务实战精讲第一部
1.Memcached是一套数据缓存系统或软件。
用于在动态应用系统中缓存数据库的数据,减少数据库的访问压力,达到提升网站系统性能的目的;Memcached在企业应用场景中一般是用来作为数据库的cache服务使用;(但不是专门干这个,还可以干别的,主要是干这个,知道就好)
1)linux有特性,系统内存没有用完,利用这些内存就会缓存起来,所以剩余的内存为881
2)cache读缓存,磁盘数据读到缓存中;buffers写缓存,将数据写到缓存中,等到一定量的时候就写入磁盘中。
3)buffers同步到磁盘中,缓冲区的数据写入磁盘命令:sync,关机前多写几次
Memcached是通过预分配指定的内存空间来存取数据的,因此它比mysql这样数据库直接操作磁盘要快很多,可以提供比直接读取数据库更好的性能;还可作为集群节点session共享(会话保持)。
一般动态服务并发都不是很好,比如:.net 、java等。所以对于集群架构,数据库和存储都是容易出现瓶颈的。对于数据库就可以用memcache;对于存储可以是nginx。
软件 | 作用 | 缓存的数据 |
memcached,redis | 后端数据库的缓存 | 动态的数据,例如:博文、bbs帖子 |
squid,nginx,varnish | 前端web应用的缓存 | 静态数据缓存,例如图片、附件、js,css,html等 |
一般前端的CDN就是分布式缓存系统,同时节省网络带宽,
对于无论是memcached后端还是nginx等前端的缓存,如果我们做了修改,就会修改对应的存储或者数据库,但是我们访问的时候还是访问的缓存数据,这里就有一个数据一致性的问题。所以
1)对于后端memcached服务,在更新数据库的同时发送一个指标告知memcached数据过期了
2)一般存储类的图片等是不经常换的,如果有数据更新,都是起另外的别名进行操作即可。
memcached和redis的区别:
memcached是纯内存软件,重启就会丢失;redis是持久化软件,不仅存在内存中,而且也会存储到磁盘中。memcache是整个项目的名称。memcached是服务器端的主程序名。