ThinkPHP5.0源碼學習之緩存Cache(二)

1、使用Cache類
TP5.0框架默認使用的是File文件緩存驅動,能夠修改全局配置文件convention.php中的type,將其改成Redis,這樣使用的就是Redis緩存驅動了。
可是Cache類中的方法不多,只有set、get、inc、dec等方法,若是沒有複雜的需求,可使用Cache類自帶的方法。
不太明白的是,Cache類的方法就那麼幾個,若是使用TP5.0的Cache類,好像不必修改type?無論是File也好仍是Redis也好,直接使用便可?
 
2、使用Redis類
TP5.0一樣自帶redis類方法,然而只有簡單的讀取緩存、寫入緩存的基本方法,而且在使用前須要安裝Redis及phpredis擴展。
一、原生用法
一開始用法以下,打斷點調試時,發現並無走到Redis.php裏,用了一些redis命令嘗試,能夠肯定並無使用TP5.0框架自帶的Redis類。
public function redis() {
    // 原生用法
    $redis = new \Redis();  // Redis前需加\
    $redis->connect('127.0.0.1', 6379);  // 必須有connect
 
    $redis->set('test', 'abc');
    $redis->append('test', ' def');
    $res = $redis->get('test');
    print_r($res);  // abc def
}

 

二、使用Redis類php

若是想使用TP5.0自帶的Redis類,須要use think\cache\driver\Redis, redis

use think\cache\driver\Redis;
 
public function redis() {
    $redis = new Redis();
   
    $redis->set('test', ‘hello world');
    $res = $redis->get('test');
    print_r($res);  // hello world
}

使用TP5.0自帶的Redis類,實例化前Redis前不用加「\」,和原生用法不同。thinkphp

 
先來看Redis類的構造方法:
能夠看到這個Redis類繼承了Driver類,也就是\thinkphp\library\think\cache下的Driver.php,其中裏面有個handler()方法:
這裏的$this->handler其實就是Redis類構造方法中實例化Redis的對象。
 
Redis自己支持五種數據類型,string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)。而TP5.0自帶redis類方法,只有簡單的讀取緩存、寫入緩存等基本方法,沒有list的相關操做方法,咱們能夠本身擴展,好比在Redis.php自定義兩個方法:
// 在list左邊添加元素
public function LPush($key, $value)
{
    return $this->handler->lPush($key, $value);
}
 
// 返回list指定區間內的元素
public function LRange($key, $start = 0, $end = -1) {
    return $this->handler->lRange($key, $start, $end);
}

在控制器中調用,就能夠實現list的相關操做了。緩存

相關文章
相關標籤/搜索