thinkphp3.2 中 Memcache 的配置和使用(memcahe的使用場景)


 

Thinkphp的默認緩存方式是以File方式,在/Runtime/Temp 下生成了好多緩存文件。

TIPS:

TP3.2支持的緩存方式有:數據緩存類型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator

(有redis的驅動類,不知道是否可用)

 

嘗試在windows下裝memcached,測試thinkphp3.2使用memecache緩存方式

1.下載memcache,使用cmd 安裝,安裝方法參照地址:

--

在Conf/config.php 中添加

'DATA_CACHE_TYPE' => 'Memcache',
'MEMCACHE_HOST'   => 'tcp://127.0.0.1:11211'
'DATA_CACHE_TIME' => '3600',

 

(2017.9.1修改更)在TP中使用 查詢緩存 cache() 測試,也可直接使用S()函數,更多實現流程和操作方法可查看用戶使用手冊或者閱讀TP源碼:

$result = $this->where($where)->cache('key',120,'memcache')->find();
// $options['type'] = 'memcache';
// $data = S('key','',$options);
$data = S('key');

Thinkphp 的 Action調用Memcache方法

import("@.ORG.CacheMemcache");
$cache = Cache::getInstance(); 
$cache->set("uid",'1231');
$cache->get("uid");
$cache->rm("uid");
$cache->clear();

出現報錯:

后來發現由於命名空間原因:

命名空間:

(PHP 5 >= 5.3.0, PHP 7)

什么是命名空間?從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在操作系統中目錄用來將相關文件分組,對於目錄中的文件來說,它就扮演了命名空間的角色。具體舉個例子,文件foo.txt 可以同時在目錄/home/greg 和 /home/other 中存在,但在同一個目錄中不能存在兩個 foo.txt 文件。另外,在目錄 /home/greg 外訪問 foo.txt 文件時,我們必須將目錄名以及目錄分隔符放在文件名之前得到/home/greg/foo.txt。這個原理應用到程序設計領域就是命名空間的概念。

在PHP中,命名空間用來解決在編寫類庫或應用程序時創建可重用的代碼如類或函數時碰到的兩類問題:

 

  1. 用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。
  2. 為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。

注意:和3.1不同,我們無需在實例化命名空間定義的類之前導入類庫文件了。

 

ThinkPHP3.2中,已經將Memcache包含了進來,於是測試用例如下:

 config.php:
  1. 在Conf/config.php 中添加  
  2. 'DATA_CACHE_TYPE' => 'Memcache',   
  3. 'MEMCACHE_HOST'   => 'tcp://127.0.0.1:11211',    
  4. 'DATA_CACHE_TIME' => '3600',  

 

 TestController.class.php:

  1. 測試用例為:  
  2. public function index(){  
  3.         $class = new \Think\Cache\Driver\Memcache();  
  4.         $class->set('key','1234');  
  5.         $data = $class->get('key');  
  6.           
  7.         echo $data;  
  8.     }  
 

運行結果:

 

 


免責聲明!

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



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