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-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,這里有點蒙圈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM