環境php
linux memcached1.5.9 (memcached安裝在虛擬機192.168.70.164)linux
wampserver集成環境 thinkphp5 php7 git
步驟一:linux安裝memcachedredis
1.Linux系統安裝memcached,首先要先安裝libevent庫。thinkphp
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連接memcachedphp7
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是有本機訪問,要外部機器訪問須要設置:app
#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擴展ssh
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,這裏有點蒙圈