thinkphp5 memcached 安装、调用、链接

环境

linux  memcached1.5.9 (memcached安装在虚拟机192.168.70.164)

wampserver集成环境 thinkphp5 php7

步骤一:linux安装memcached

1.Linux系统安装memcached,首先要先安装libevent库。

2.源码安装

wget http://memcached.org/latest                    下载最新版本
tar -zxvf memcached-.x.x.tar.gz 解压源码
cd memcached-.x.x 进入目录
./configure --prefix=/usr/local/memcached 配置
make && make test 编译
sudo make install 安装

3.运行 memcached

// 作为前台程序运行
/usr/local/memcached/bin/memcached -p -m 64m -vv // 作为后台程序运行 #/usr/local/memcached/bin/memcached -p 11211 -m 64m -d 或者
#/usr/local/memcached/bin/memcached -d -m 64M -u root -l 0.0.0.0 -p 11211 -c 256 -P /tmp/memcached.pid

4.ssh链接memcached

telnet 127.0.0.1
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
// 以上为正常状态 // 这是一条完整的创建命令
set foot
bar
// 记得按回车键 End set foo 保存命令
bar 数据
STORED 结果
get foo 取得命令
VALUE foo 数据
bar 数据
END 结束行
quit 退出

注意:默认情况下memecached是有本机访问,要外部机器访问需要设置:

#netstat -tnlp   // 查看监听状态

#/usr/local/memcached/bin/memcached -d -m  -u root -l 0.0.0.0 -p  -c  -P /tmp/mem  // 设置对外访问(0.0.0.0) 【127.0.0.1只有本机访问】

步骤二:php7添加memcache扩展

1.下载php_memcache.dll

下载地址:https://gitee.com/zhongjie19/php7_memcached.dll

2.php.ini配置

extension=php_memcache.dll  // php.ini末尾加入

步骤三:thinkphp5链接memcached,有三种链接方式

1.普通cache,只需要修改application/config.php,参数如下(注意加入缓存ip和端口)

// +----------------------------------------------------------------------
// | 缓存设置
// +---------------------------------------------------------------------- 'cache' => [
// 驱动方式
'type' => 'memcache',
// 缓存保存目录
'path' => CACHE_PATH,
// 缓存前缀
'prefix' => '',
'host'=>'192.168.70.164',
'port' => '',
// 缓存有效期 0表示永久缓存
'expire' => ,
],

php

导入:use think\cache\Driver\Memcache;

public function m2(){
cache('name','');
}

ssh

get name
VALUE name END

2.复合缓存

'cache' =>  [
// 使用复合缓存类型
'type' => 'complex',
// 默认使用的缓存
'default' => [
// 驱动方式
'type' => 'file',
// 缓存保存目录
'path' => CACHE_PATH,
],
// 文件缓存
'file' => [
// 驱动方式
'type' => 'file',
// 设置不同的缓存保存目录
'path' => RUNTIME_PATH . 'file/',
],
// redis缓存
/*'redis' => [
// 驱动方式
'type' => 'memcached',
// 服务器地址
'host' => '192.168.70.164',
'password' => 'admin999',
],*/
// memcache缓存
'memcache' => [
// 驱动方式
'type' => 'memcache',
// 服务器地址
'host' => '192.168.70.164',
'port' => '', ],

php

public function m(){
//$mem = Cache::store('memcache')->get('name');
$mem = Cache::store('memcache')->set('name',);
//print_r($mem);
}

ssh

get name
VALUE name END

3.内部链接

public function mem(){
$mem = new \Memcache();
$mem->connect("192.168.70.164", );
$mem->set('name',);
$val = $mem->get('name');
echo $val;
}

以上都是关闭了iptables

service iptables stop

其它:

#只允许本机使用11211
iptables -A INPUT -p tcp -s 127.0.0.1 --dport -j ACCEPT
iptables -A INPUT -p udp -s 127.0.0.1 --dport -j ACCEPT #禁止公网入方向11211端口
iptables -I INPUT -p tcp --dport -j DROP
iptables -I INPUT -p udp --dport -j DROP #保存配置,重启iptables
service iptables save
service iptables restart

总结:

1.注意memcached对外开放的端口,12000

2. 在虚拟机里面装的是memcached,但是在tp5里面调用却是memcache,php7的扩展也是php_memcache.dll,这里有点蒙圈

上一篇:推荐 9 个 爱不释手的 JSON 工具!


下一篇:题解 SP212 WATER - Water among Cubes