一 简介
1)memcached是'多线程'工作,而redis是'单线程'工作
多线程模式允许 memcached 能够'充分利用多个 CPU',并在 C'PU 之间共享'所有的缓存数据
memcached 使用一种'简单的锁机制'来保证'数据更新操作的互斥'
2)各个memcached服务器之间'互不通信',各自独立存取数据,'不共享'任何信息
3)服务器并不具有分布式功能,'分布式部署'取决于'memcache客户端'
二 特征
1)'不支持'数据的持久化,'服务器关闭'之后'数据全部丢失';
2)Memcached'简洁而强大',便于'快速开发',上手较为'容易';
3)'互不通信'的Memcached之间具有'分布特征';
4)没有'安全机制' --> 不需要'用户名和密码',只需要知道'memcached'服务器的ip地址和端口号即可
使用'-l'参数设置为只有本地可以连接:这种方式,别的机器都不能访问,可以达到最好的安全性
使用'防火墙',关闭'11211'端口,外面也不能访问
三 常见支持的语言
1.PHP
PECL/memcached
PECL/memcache
PHP libmemcached --> 'php74-php-pecl-memcached' -->'重点'
2.Java
spymemcached
Java memcached client/danga
memcache-client-forjava/taobao --> '重点'
3.Perl
my $memclient = Cache::Memcached->new({ servers => [ '10.0.0.10:11211', '10.0.0.11:11211' ]});
4.Python
pip install python-memcached
三 应用场景
1)查询'频繁' -->'热点数据' -->'有意义'
memcached适合'变化频繁'-->更准确的是'查询频繁' -->'select'
变化频繁且需要入库,这个就直接不要考虑memcached了 --> 原因: 没办法'持久化'呗
应用场景: 缓存的'内容变化不频繁',但客'户端'查询频繁的数据,最后就是'读多写少'的场景
2)缓存的'数据不大'
原因:memcached对存储'数据大小'有限制、'价格问题'
3)pv值高
pv: 就是page view'页面展示次数',如果一些页面都'没什么访问量'就不要考虑memcached了 --> '有意义'
电商场景中: 用于'页面数据'的缓存
memcached'也是支持集群'的,但它的集群仅仅'体现在数据的分库中'
memcached '内存有限制' --> 我用'多个memcached实例来存'不就可以了
memcached'节点之间'是'不会'进行任何通信的,更别说什么'master与slave'机制了,他本身'也不支持持久化',服务'重启数据就丢了'
一种是'客户端'支持集群,一种是'代理端'支持集群(性能会有所损耗,大概20%)-->'推荐使用客户端'
-c 选项是最大运行的'并发连接数',默认是1024,按照你'服务器的负载量'来设定
-v 输出'警告和错误'信息
-vv 打印客户端的'请求和返回'信息
五 参考博客