Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高运行速度。
存储
Memcached中保存的数据都存储在Memcached内置的内存存储空间中。数据仅存在于内存中,重启memcached或者重启操作系统都会导致全部数据消失。
memcached的内存存储空间是有一定限制的,当内容容量达到指定值之后,就会根据LUR算法自动删除不适用的缓存。memcached是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
使用
多读少写
毕竟是缓存的数据,所以对于Memcached来说,它并不适合写的操作,举个简单的例子:
高校的选课系统再形象不过了,如果在学生选课的过程中,把课程数据从数据库中读出来放在Memcached内置的内存存储空间中,因为课程信息是需要不断更新的,想必大家都体会过选课的艰辛,如果读取出来的始终是Memcached中的数据,那学生所选课程必定会混淆,提交数据更会频繁失败甚至出错。
使用Mamcached的目的是通过缓存数据库查询结果,减少数据库的访问次数,以提高效率,但像上述这种情况,需要实时更新数据库数据,那就绝不适合使用Memcached来缓存数据,就算要用,也要慎重考虑它的用途。
优点
缺点
1.memcached数据是保存在内容当中的,一旦服务进程重启,数据会全部丢失。
查询对策:可以采取更改memcached的源代码,增加定期写入硬盘的功能。
2.memcached以root权限运行,而且memcached本身没有任何权限管理和认证功能,安全性不足。
查询对策:可以将memcached服务绑定在内网IP上,通过防火墙进行防护。
以上两种对策都是通过查询得知的,但并没有经过具体的实践,同伴们尝试之后可以告知小编哦!
补充
Memcached的内存分配以page为单位,默认情况下一个page是1M。
Memcached的学习内容暂时是这些,后期学习中再不断补充。