Laravel入坑指南(6)——Redis緩存

寫在前面:php

Redis是經常使用nosql服務之一,在Redis官網上最新的穩定版本是6.0.6。這裏不討論Redis服務如何編譯,如何使用。在Redis官網有很健全的文檔。html

這裏要討論的是不管在centos6仍是在centos7下,編譯Redis 6+版本都會看到一堆很魔性的報錯redisServer has no member ****。原覺得是redis的源碼有問題,後來發現是默認的gcc版本不夠支持這麼高的版本。因此咱們要先把默認的gcc版本升上去:mysql

#安裝開發套件
yum install cpp
yum install binutils
yum install glibc
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make
#或者直接用 yum groupinstall Development tools


#升級gcc版本
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash

到這裏,gcc的版本被咱們升到了9.3.1。這時,gcc版本已經接近顛峯,能夠浪起來了。c++

 

 

寫在前面2:git

PHP鏈接redis有兩種方式,一種是採用pecl提供的redis擴展,咱們稱爲phpredis(傳送門);另外一種,則是以純的php實現redis協議的包predis(傳送門)。這兩種鏈接方式,各有優缺點:github

phpredis:優勢:速度飛快,穩定性極強;劣勢:安裝麻煩一點點。(對於筆者來講,這個劣勢根本稱不上劣勢,玩個吃雞都要安裝,這麼牛B的擴展反而想偷懶怎麼可能?)redis

predis:優勢:安裝極其方便,一名composer require predis/predis就搞定了;劣勢:由於是純php實現的,運行效率上自上敵不過phpredis。sql

對於Laravel來講,二者都支持,只要正確安裝便可。筆者原本想介紹predis,可是在composer安裝過程當中遇到報錯,須要依賴fileinfo擴展。筆者尋思着既然都要安裝擴展,爲何我不直接用pecl的redis擴展?編程

因此如下篇幅,包括配置都是有phpredis爲例子進行討論。centos

 

 

一、配置

PHP鏈接redis與以前討論過的鏈接mysql很相似,須要知道host(地址)、password(密碼)和port(端口,默認爲6379)。redis的鏈接配置在項目根目錄下/config/database.php中的redis配置節,以下圖

 這個配置節中,全部的value都用env()函數讀出來的(這個函數幹啥用?回去看看第4節),因此咱們在/.env配置文件中又有以下配置項:

 到了這一步配置就完成了。注意REDIS_CLIENT如今用的是phpredis,並不是predis,因此你們要確保pecl redis擴展安裝成功,劃重點敲黑板。不會安裝擴展的同窗,點擊文章最下方的連接,連繫筆者。

 

 

 二、使用

use Illuminate\Support\Facades\Redis;

Redis::set("key",["arr_key"=>"arr_value"]);

上面這是一個簡單的例子。例子中redis的key對應了一個php的數組。

可是咱們進入redis客戶端一看,這時寫入的是Array這個字符串。由於我沒寫入時沒有對這個數組進行序列化,咱們須要在以前調用setOption設置序列化方式。

那問題來了,咱們怎麼調用setOption,關於redis這一節官網介紹的資料很是少,除了get和set函數幾乎沒太多內容。因此這時筆者去翻閱了源碼,發現RedisManager源碼中有這幾行代碼:

 瞬間恍然,phpredis的全部成員函數,咱們均可以經過\Illuminate\Support\Facades\Redis進行調用(劃重點)

use Illuminate\Support\Facades\Redis;

Redis::setOption(\Redis::OPT_SERIALIZER, \Redis::SERIALIZER_PHP);
Redis::setex("hello",20,["ok"=>"answer"]);

上面這個示例中,經過\Redis調用了phpredis的兩個常量;setex也是phpredis提供的函數。

若是想問phpredis有多少成員函數可供使用,請進入:傳送門

 

 

到這裏,咱們在Laravel下如何使用redis已經一切瞭然。這一節就要結束了,討論的話題已通過半。這個系列的文章計劃有12篇,每篇的閱讀和練習假設須要2小時,咱們目的就是讓你們24小時入坑Laravel。

你們下期再見:)

 

 

寫在最後:關於Redis集羣

redis集羣在代碼鏈接與使用上與單機redis並沒有太大差異,惟一的區別在於實例化鏈接類的過程當中。

phpredis鏈接集羣,請看這裏:傳送門    須要密碼鏈接

predis鏈接集羣,請看這裏:傳送門    須要密碼鏈接

 

 

---------------------------  我是可愛的分割線  ----------------------------

最後博主借地宣傳一下,漳州編程小組招新了,這是一個面向漳州青少年信息學/軟件設計的學習小組,有意向的同窗點擊連接,聯繫我吧。

相關文章
相關標籤/搜索