1、什么是memcache
memcache是一套分布式高速缓存系统,分布式是指可以同时在多台服务器安装memcache,这样可以达到一个很好的集群效果;高速是指,memcache的所有数据都是维护在内存中,它的读取速度比存取硬盘中的速度要快的多。
2、memcache的作用
可以在应用和数据库当中增加一个缓冲层,在数据库中读取的数据,接下来再次读取时可以直接在memcache中读取,这样可以减轻数据库的压力。
3、memcache使用场景:
1、非持久化存储:对数据存储要求不高,数据丢失也不会对系统产生影响。
2、分布是存储:不适合单机使用,memcache对内存的消耗很大。
3、Key/Value格式存储:格式简单,不支持List、Array数据格式。
memcache和memcached对比:
memcache 是pecl扩展库版本
memcached是libmemcached版本
Memcache是原生实现的,支持OO和非OO两套接口并存。而memcached是使用libmemcached,只支持OO接口。
在实际使用中可以将memcached当成是memcache的升级版本,推荐使用memcached,memcached有比memcache更多的操作,而且速度和稳定性都比memcache好很多
4、memcached服务端安装
sudo apt-get install memcached
memcached服务启动:
/usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 150 -u nginx
-d:守护进程模式启动,终端退出后进程移入还可以继续运行
-l:指定ip地址:127.0.0.1
-p:指定端口号:11211
-m:给memcached分配内存,单位'M':150
-u:用户名,以哪个的身份登录memcache:nginx
5、php-memcached扩展安装
sudo apt install php-memcached
php中使用memcached
memcached常用方法:
$m = new Memcached(); $servers = [ [127.0.0.1,11211] //默认端口:11211 ]; $m -> addServers($servers);//添加多台memcache服务器连接 $m -> addServer('127.0.0.1',11211);//连接单台memcache服务器 $m -> add('var1','value1','3600');//添加一个值,如果已经存在,则返回false,第三个值为过期时间 $m -> set('num',12,0); //添加memcache数据,第三个参数表示数据有效时间,0表示永久有效 $m -> get('num'); //获取数据 $m -> delete('num'); //删除数据 $m -> setMulti($data,0);//把多条数据放入数组中,同时添加多条数据,第二个参数是数据的有效时间 $m -> getMulti($keydata;//同时获取多条数据,出入的数组为多个'key'组成的数组 $m -> deleteMulti($keydata;//同时删除多条数据 $m -> getResultCode();//获取上次操作返回的编码,返回0表示操作成功 $m -> getResultMessage();//获取上次操作的结果 $m -> flush(); //清除memcached的所有缓存 $m -> increment('num',2); //每执行一次,num的值增加2 $m -> decrement('num',2); //每执行一次,num的值减少2
memcached使用注意事项:
不要在单机模式中使用memcached;
不要只使用memcached保存重要数据,一定要把memcached当成缓存用,而不是当成数据存储;
定期查看缓存的分布状况和击中状况。