環境
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-1.x.x.tar.gz 解壓源碼 cd memcached-1.x.x 進入目錄 ./configure --prefix=/usr/local/memcached 配置 make && make test 編譯 sudo make install 安裝
3.運行 memcached
// 作為前台程序運行
/usr/local/memcached/bin/memcached -p 11211 -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 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. // 以上為正常狀態 // 這是一條完整的創建命令 set foot 0 0 3 bar // 記得按回車鍵 End set foo 0 0 3 保存命令 bar 數據 STORED 結果 get foo 取得命令 VALUE foo 0 3 數據 bar 數據 END 結束行 quit 退出
注意:默認情況下memecached是有本機訪問,要外部機器訪問需要設置:
#netstat -tnlp // 查看監聽狀態 #/usr/local/memcached/bin/memcached -d -m 10 -u root -l 0.0.0.0 -p 12000 -c 256 -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' => '12000', // 緩存有效期 0表示永久緩存 'expire' => 0, ],
php
導入:use think\cache\Driver\Memcache;
public function m2(){ cache('name','7777'); }
ssh
get name VALUE name 768 3 777 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' => '12000', ],
php
public function m(){ //$mem = Cache::store('memcache')->get('name'); $mem = Cache::store('memcache')->set('name',666); //print_r($mem); }
ssh
get name VALUE name 768 3 777 END
3.內部鏈接
public function mem(){ $mem = new \Memcache(); $mem->connect("192.168.70.164", 12000); $mem->set('name',3333); $val = $mem->get('name'); echo $val; }
以上都是關閉了iptables
service iptables stop
其它:
#只允許本機使用11211 iptables -A INPUT -p tcp -s 127.0.0.1 --dport 11211 -j ACCEPT iptables -A INPUT -p udp -s 127.0.0.1 --dport 11211 -j ACCEPT #禁止公網入方向11211端口 iptables -I INPUT -p tcp --dport 11211 -j DROP iptables -I INPUT -p udp --dport 11211 -j DROP #保存配置,重啟iptables service iptables save service iptables restart
總結:
1.注意memcached對外開放的端口,12000
2. 在虛擬機里面裝的是memcached,但是在tp5里面調用卻是memcache,php7的擴展也是php_memcache.dll,這里有點蒙圈