這篇文章主要為大家介紹了關於laravel使用Redis實現網站快取讀取的相關資料,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們來一起學習學習吧。
redis的簡介
#Redis 是完全開源免費的,遵守BSD協議,是一個高效能的key-value資料庫。 Redis 與其他 key - value
快取產品有以下三個特點: Redis支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用。
Redis不僅支援簡單的key-value類型的數據,同時也提供list,set,zset,hash等資料結構的儲存。
Redis支援資料的備份,即master-slave模式的資料備份。
Redis 優勢
#效能極高– Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
豐富的資料型別 – Redis支援二進位案例的 Strings, Lists, Hashes, Sets 和 Ordered Sets 資料型別運算。
原子 – Redis的所有操作都是原子性的,同時Redis也支援對幾個操作全併後的原子性執行。
豐富的特性 – Redis也支援 publish/subscribe, 通知, key 過期等等特性。
如何安裝redis
#1.Ubuntu(因為我使用的是Homestead環境虛擬機器是Ubuntu的所以只用過這一種方法安裝)
官方給的Ubuntu安裝方法
$sudo apt-get update $sudo apt-get install redis-server
由於我的網站採用的laravel的框架,要使用composer的方法安裝
composer require predis/predis
如果安裝了lumen微框架還需要安裝illuminate/redis (5.2.*)
composer require illuminate/redis (5.2.*)
##如果安裝了lumen
//需要在bootstrap/app.php里面加入此段代码 $app->register(Illuminate\Redis\RedisServiceProvider::class); $app->configure('database');
Redis可以當主資料庫,所以Laravel中Redis的設定資訊位於config/database.php中:
'redis' => [ 'cluster' => false, 'default' => [ 'host' => '127.0.0.1', 'port' => 6379, 'database' => 0, ], ],
#其中cluster選項表示是否在多個Redis節點間進行分片,這裡我們本地測試只有一個節點故將其設定為false。
default選項表示預設Redis主機連接,這裡Redis和Web伺服器共用一台主機,所以host為127.0.0.1,Redis預設連接埠是6379。
此外,default選項也支援更多連接參數(如果需要的話):
參數 | 意義 |
預設值 |
---|---|---|
host | #伺服器IP位址/主機名稱 | 127.0.0.1 |
port | Redis伺服器監聽的連接埠號碼 | #6379 |
password | 如果伺服器需要認證密碼 | 不使用密碼 |
database |
連接時選擇的資料庫索引 |
沒有設定索引 |
timeout |
#連線到Redis伺服器逾時時間 | 5秒 |
read_write_timeout | 透過網路連線進行讀寫操作的逾時時間 | 系統預設(不限制逾時時間的話設定為-1) |
read_write_timeout |透過網路連線進行讀寫操作的逾時時間|系統預設(不限制逾時時間的話設定為-1)
#另外Redis如果是作為快取工具,還需要在config/cache.php設定redis選項:
'redis' => [ 'driver' => 'redis', 'connection' => 'default', ],
這裡的connection對應config/database中redis的默認主機default配置。
完成上述配置之後我們就可以在應用程式碼中使用Redis進行資料存取了。
看一個實例--laravel的mysql與Redis搭配
我的想法是在讀取的時候會先去快取中去找,如果找到那就大吉大利了,找不到再去資料庫中查找並且調到快取中。
if (Cache::has($key)){ //首先查寻cache如果找到 $values = Cache::get($>key); //直接读取cache return $values; }else{ //如果cache里面没有 $values = DB::select($sql); Cache::put($key,$value,$time); return $values; }
但是laravel的cache也提供了個remember函數
$values = Cache::remember($key,$time,function () { return DB::select($this->sql); });
如果快取有直接讀取並傳回,如果快取項目在快取中不存在,則傳回給remember 方法的閉包將會被運行,而且閉包的運行結果將會被存放在快取中。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
#
以上是關於laravel使用Redis實現網站快取讀取的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!