摘要:原文發(fā)表在我的個(gè)人網(wǎng)站利用完善自己的框架三緩存本教程示例代碼見回顧上兩篇文章中我們完成了視圖加載類和郵件發(fā)送類的設(shè)計(jì),完成了兩個(gè)可插拔組件。相比使用文件作為緩存,擁有更高的性能更好地可維護(hù)性和更強(qiáng)大的操作。
原文發(fā)表在我的個(gè)人網(wǎng)站:利用 Composer 完善自己的 PHP 框架(三)——Redis 緩存
本教程示例代碼見 https://github.com/johnlui/My-First-Framework-based-on-Composer
上兩篇文章中我們完成了 View 視圖加載類和 Mail 郵件發(fā)送類的設(shè)計(jì),完成了兩個(gè)可插拔組件。本篇文章中我們將構(gòu)建另一個(gè)可插拔組件——Redis 接口,并使用它構(gòu)建 MFFC 的高速緩存服務(wù)。
正文 Redis 簡(jiǎn)介Redis 是一個(gè)高性能的 key-value 數(shù)據(jù)庫(kù),其 value 支持 String、Map(Hash)、list、set 和 sorted sets,中文翻譯為 字符串、字典(哈希,在世界上最好的語言PHP 中屬于 數(shù)組 的一部分)、列表、集合和有序集合。
我們可以用 Redis 作為高速緩存,存放系統(tǒng)經(jīng)常需要訪問的數(shù)據(jù)。相比使用文件作為緩存,Redis 擁有更高的性能、更好地可維護(hù)性和更強(qiáng)大的操作 API。
Redis 安裝Redis 官網(wǎng)為 http://redis.io/,可以很容易地下載安裝并在命令行直接啟動(dòng),它默認(rèn)監(jiān)聽 6379 端口。
Redis 服務(wù)端裝好并啟動(dòng)之后,并不能寫一行代碼直接開始使用了,我們還需要安裝 客戶端。目前有兩種方式比較推薦:
安裝 PHP 的 Redis 擴(kuò)展。
使用 nrk/predis 包。
Redis 使用注意:作為 PHP 擴(kuò)展安裝時(shí),請(qǐng)先打印出 phpinfo(),找到 Loaded Configuration File 這一項(xiàng),編輯這個(gè) php.ini 才有效。別忘了 重啟 Apache 或者 php-fpm。
我們?cè)诖诉x擇 nrk/predis 包作為 Redis 驅(qū)動(dòng)。編輯 composer.json:
"require": { "codingbean/macaw": "dev-master", "illuminate/database": "*", "filp/whoops": "*", "nette/mail": "*", "predis/predis": "*" },
運(yùn)行 composer update,等待安裝完成。
然后我們就要開始構(gòu)建 Redis 類了,新建 services/Redis.php:
set($key,$value); } } public static function get($key) { self::init(); return self::$redis->get($key); } public static function delete($key) { self::init(); return self::$redis->del($key); } private static function _setex($key,$value,$time) { self::$redis->setex($key,$time,$value); } private static function _psetex($key,$value,$time) { self::$redis->psetex($key,$time,$value); } }
新建配置文件 config/redis.php:
"127.0.0.1", "port" => 6379 ];
然后我們就可以開始測(cè)試?yán)瞺 在 HomeController 中增加:
Redis::set("key","value",5,"s"); echo Redis::get("key");
運(yùn)行一次后將上面一行注釋掉,不斷刷新,看 value 是否會(huì)在設(shè)定的時(shí)間結(jié)束后從頁面上消失。
代碼分析我們創(chuàng)建了 Redis 類,提供了 ::set()、::get() 和 ::delete() 三個(gè)靜態(tài)方法,用于新增、獲取和刪除一對(duì) key-value。
::set() 方法支持設(shè)定 key-value 鍵值對(duì)的生命周期,并支持 h、m、s 和 ms 四個(gè)單位,代表時(shí)、分、秒和毫秒,這樣就可以方便地用于緩存了。
嚴(yán)格意義上講,緩存類至少還需要一個(gè) 判斷 key 是否還存在 的基本操作,所以這個(gè)類還只是一個(gè)略微強(qiáng)大的 Redis 接口。
建造緩存接口作為練習(xí),大家可以嘗試自己動(dòng)手寫一下。選擇新建 Cache 類或者在 Redis 類中新增接口均可。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/61754.html
摘要:原文發(fā)表在我的個(gè)人網(wǎng)站利用完善自己的框架三緩存本教程示例代碼見回顧上兩篇文章中我們完成了視圖加載類和郵件發(fā)送類的設(shè)計(jì),完成了兩個(gè)可插拔組件。相比使用文件作為緩存,擁有更高的性能更好地可維護(hù)性和更強(qiáng)大的操作。 原文發(fā)表在我的個(gè)人網(wǎng)站:利用 Composer 完善自己的 PHP 框架(三)——Redis 緩存 本教程示例代碼見 https://github.com/johnlui/My...
摘要:上次的訪談,介紹了下可愛的依云醬,回憶傳送門。這里簡(jiǎn)單地介紹下龍女仆,全名小林家的龍女仆,為什么介紹這部劇呢因?yàn)樵O(shè)計(jì)獅顏值同學(xué)也安利了這部。劇情簡(jiǎn)介在獨(dú)身又勞累的小林劃重點(diǎn)一名程序員身邊突然出現(xiàn)的穿著女仆服裝的美少女托爾。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的訪談,介紹了下可愛的依云醬,回憶傳送門。不...
摘要:上次的訪談,介紹了下可愛的依云醬,回憶傳送門。這里簡(jiǎn)單地介紹下龍女仆,全名小林家的龍女仆,為什么介紹這部劇呢因?yàn)樵O(shè)計(jì)獅顏值同學(xué)也安利了這部。劇情簡(jiǎn)介在獨(dú)身又勞累的小林劃重點(diǎn)一名程序員身邊突然出現(xiàn)的穿著女仆服裝的美少女托爾。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的訪談,介紹了下可愛的依云醬,回憶傳送門。不...
摘要:豐富的數(shù)據(jù)類型支持二進(jìn)制案例的及數(shù)據(jù)類型操作。原子的所有操作都是原子性的,同時(shí)還支持對(duì)幾個(gè)操作全并后的原子性執(zhí)行。豐富的特性還支持通知過期等等特性。完成上述配置之后我們就可以在應(yīng)用代碼中使用進(jìn)行數(shù)據(jù)存取了。 教科書式開頭————先看一下redis的簡(jiǎn)介 Redis 是完全開源免費(fèi)的,遵守BSD協(xié)議,是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。 Redis 與其他 key - value ...
閱讀 2901·2021-11-23 09:51
閱讀 1547·2021-11-15 11:36
閱讀 3006·2021-10-13 09:40
閱讀 1863·2021-09-28 09:35
閱讀 13040·2021-09-22 15:00
閱讀 1367·2019-08-29 13:56
閱讀 2924·2019-08-29 13:04
閱讀 2698·2019-08-28 18:06