Memcache和Memcached

Memcache介绍:Memcache是一套分布式缓存系统,分布式就是说可以在多台服务器上同时安装Memcache服务,这样可以达到很好的集群效果。高速,是因为Memcache数据都是维护在内存中的,它的读取速度比存储在硬盘中的数据的读取速度要快很多。 
作用:当我们的应用访问量比较大的时候,数据库的压力也会特别大,Memcache可以在应用和数据库之间增加一个缓冲层,就是我们之前从数据库中已经读取到的数据,我们第二次或者是接下来再读取的时候,就可以直接访问Memcache去读取这些数据,从而减轻Mysql等等数据库的压力 
怎样理Memcache:其实可以理解成,它是一个只有一张表的数据库,这张表有两个字段,分别是key和value,value是保存的数据,key就是这个数据的ID,用来保证查找时的唯一性 
使用场景: 
(1)非持久化存储:对数据存储要求不高,也就是说,如果这份数据丢失,也不会对系统造成太大的影响,因为当系统断电或被重启后内存会被清空掉,那么之前保存在Memcache中的数据也会被清空掉。所以要把Memcache当作缓存使用,而不要当成真正的数据库 
(2)分布式存储:不适合单机使用,因为Memcache对内存的消耗很大,如果使用Memcache,推荐将其安装在另外一台机器上单独作为缓存系统,而不要把Memcache和数据库都装到一台机器。 
(3)Key/Value存储:格式简单,不支持List、Array数据格式

Memcached和Memcache是两个版本,推荐Memcached,它有更多的改进和功能函数,是Memcache的升级版本,速度和稳定性都比较高

安装Memcached 
1,Memcache服务端的安装 
(1)编译安装,Libevent Memcache 
先安装Libevent这个扩展,编译安装的好处就是可以在安装的过程进行一些自定义的设置,比如指定软件安装在哪儿,比如编译安装过程出现了哪些错误,而对Linux了解不是特别多的情况下,你可能处理错误的时候就会相对困难 
(2)使用依赖管理工具yum、apt-get进行安装

实际安装:(操作系统是64位的Centos) 
如果要编译安装,需要将安装包提前下载下来libevent、memcached 
这里使用依赖管理工具安装

#yum install memcached
  • 1

启动memcached

#/usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 150 -u root
/*
    -d:守护进程的模式启动。守护进程就是,当你从终端窗口推出之后,程序依然进行
    -l:指定IP地址
    -p:指定端口号
    -m:为memcached分配多少内存,这里是以M为单位
    -u:以哪个身份去启动memcached(线上的时候最好不要用超级管理员用户)
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

可以使用ps查看memcached进程是否启动

#ps -ef | grep memcached
  • 1

2,Memcache客户端的安装 
1,安装前置扩展Libmemcached 
下载好libmemcached和memcached,对libmemcached进行解压 
这里使用编译安装,进入解压出来的文件夹 
执行

#./configure --prefix=/usr/lib/libmemcached
然后执行
#make && makeinstall
  • 1
  • 2
  • 3

2,为php安装memcached扩展 
解压memcached,进入到解压目录当中 
使用phpize的方式安装memcached扩展

#phpize
此时就会做出一个configure的文件
#./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/lib/libmemcached-sasl
后边是指定php的配置文件和刚安装的libmemcached的位置,大家根据自己的配置文件路径进行填写
#make
#make install
执行完make install之后,我们会看见一个扩展目录,将该路径添加到php配置文件中
php.ini中加入
extension=memcached.so
然后重启服务器环境,查看php扩展
#php -m | grep memecached
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在PHP中使用memcached 
系统类:addServer、addServers、getStats、getVersion 
数据类:add、setdelete、flush、replace、increment、get 
进阶类:setMulti、deleteMulti、getMulti、getResultCode、getResultMessage 
更多关于memecached的操作,可以到php官网查看(php.net)

test.php
<?php
/*系统类*/


$m = new Memcached();
/*添加服务器*/
$m->addServer('127.0.0.1', 11211);
/*添加多台服务器*/
$array = array(
    array('127.0.0.1', 11211),
    array('127.0.0.1', 11211)
);
$m->addServers($array);

/*查看服务器状态*/
print_r($m->getStats());
/*查看服务端版本号*/
print_r($m->getVersion());

/*数据类*/

$m->add('mkey', 'mvalue', 0);//第三个参数是数据存在的时间,0表示永久
echo $m->get('mkey');//获取数据

/*假设对同一个key值进行两次添加的话,后边的操作不会覆盖前边的value,如果想替换掉,就使用replace*/
$m->replace('mkey', 'mvalue2');

/*还可以使用set方法表添加数据,它的好处就是,当我们的数据不存在时会帮我们新建数据,如果存在,就会覆盖原值*/
$m->add('mkey', 'mvalue', 600);

/*删除数据*/
$m->delete('mkey');

/*清空memcache中的所有缓存*/
$m->flush();

/*对memcache中整形数据进行+1或+任意数值的操作*/
$m->set('num', 5, 0);
$m->increment('num', 5);//每次刷新页面,num自增5
$m->get('num');
/*自减decrement用法相同*/

/*下边的方法只支持Memcached,不支持Memcache*/
/*一次添加多条数据*/
//原始方法,多次使用set()
//现在可以使用setMulti()
$data = array(
    'key' => 'value',
    'key1'=> 'value1'
);
$m->setMulti($data,0);
$result = $m->getMulti(array('key','key1'));//获取多条数据
print_r($result);

//删除多条数据
$m->deleteMulti(array('key','key1'));
//返回上一次操作返回的编码(数字的形式存在) 可以到手册中查看每一个编码的含义 
echo $m->getResultCode();//比如  成功  返回0
//获取操作结果
echo $m->getResultMessage();//比如  成功  返回SUCCESS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值