laravel使用Redis讀取網站快取的方法

小云云
發布: 2023-03-22 17:52:01
原創
1980 人瀏覽過

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的所以只用過這一種方法安裝,Windows請到http://www.redis.net.cn/tutor 或http://www.jb51.net/article/84071.htm...  )

官方給的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
portRedis伺服器監聽的連接埠號碼#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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!