为什么要使用memcache?
在这里介绍memcache有点班门弄斧了请参考百度百科;https://baike.baidu.com/item/memcached/1625373?fr=aladdin和官网:http://memcached.org/
对比数据库mysql:
- mysql将数据写入到磁盘中,读取和写入比较缓慢。memcache将数据写入到内存中,提升效率,但是容易丢失
- 数据存储使用mysql,因为数据是真正的核心,在大并发的情况下以及大业务需要用到内存数据库
- 基本上memcache服务工作处于内存中,但不是永久,也会定期备份到磁盘中
注:常用的缓存服务(memcache。redis,MongoDB)
memcache有什么优点
- 对于用户来说网站访问快,会提升体验
- 对于网站来说,减少了数据库的压力,只用内存中没有数据才会去请求数据库
- 节省了一部分开支来省下数据库的配置要求
实际应用
- 作为数据库的前段缓存
- 作为集群后端的session会话保持
memcache分布式缓存:
注:memcache不支持分布式缓存,需要程序实现
- 所有MC服务器内存的内容都是不一样的。这些服务器内容加起来接近数据库的容量。比如1T的数据库,一台缓存数据库的内存没有那么大,因此分成10台缓存服务器。
- 通过在客户端(Web)程序或者MC的负载均衡器上用HASH算法,让同一内容都分配到一个MC服务器。
- 普通的HASH算法对于节点宕机会带来大量的数据流动(失效),可能会引起雪崩效应。
- 一致性HASH可以让节点宕机对节点的数据流动(失效)降到最低。