Yii2 Redis使用小記 Cache

2022-01-18 00:03:30 字數 1322 閱讀 8843

前些天簡單學習了下 redis,現在準備在專案上使用它了。我們目前用的是 yii2 框架,在官網搜尋了下 redis,就發現了yii2-redis這擴充套件。

安裝後使用超簡單,開啟 common/config/main.php 檔案,修改如下。

'cache' => [

// 'class' => 'yii\caching\filecache',

'class' => 'yii\redis\cache',

],'redis' => [

'class' => 'yii\redis\connection',

'hostname' => 'localhost',

'port' => 6379,

'database' => 0,

],

ok,現在已經用 redis 接管了yii的快取,快取的使用和以前一樣,以前怎麼用現在還是怎麼用,但是有個不算bug的bug,所以算小坑,等會會說。

來測試下 cache 先,

sleep(6);

來看下測試結果。

和原來一樣的用法,沒問題。。

但是剛才我說過了有個不算bug的bug,所以算小坑,到底是什麼東西呢?

如果你直接用 redis 接管了 cache,如果正常使用是完全沒問題的,但是當 過期時間 的值超過 int 範圍的時候,redis就會報錯。

我使用了 yii2-admin,湊巧讓我踩到坑了,因為他快取了30天,也就是2592000秒,並且 redis 快取時間精度預設用毫秒,所以時間就是 2592000000 毫秒。

而 redis 的過期時間只能是int型別,cache.php 裡的 php 強制轉為int,而沒有做其他處理,所以就會變成 -1702967296 然後就報錯了。

但是直接在 redis 命令列下不會負數,如圖。

不過沒關係,修復起來也很簡單,我們修改為秒即可。

開啟 vendor/yiisoft/yii2-redis/cache.php 第 133 行,修改為如下**。

protected function setvalue($key, $value, $expire)

else

}

這樣就ok了。

好了,今天分享這些。

yii2 redis 擴充套件詳解

1 可能碰到的問題 composer 是php下的乙個依賴管理工具。你可以在你的專案中宣告你所需要用到的類庫,然後composer會在專案中為你安裝它們。上面的問題是php缺少openssl擴充套件。在php.ini中去掉extension php openssl.dll這一行開頭的注釋,然後重啟s...

Yii2 配置yii2 redis擴充套件

前提 已經安裝redis。一 包檔案安裝 yiisoft yii2 redis extentions.php然後配置vender yiisoft extensions.php檔案 yiisoft yii2 redis array name yiisoft yii2 redis version 2.0...

Yii2 配置yii2 redis擴充套件

前提 已經安裝redis。一 包檔案安裝 yiisoft yii2 redis extentions.php 然後配置vender yiisoft extensions.php檔案 yiisoft yii2 redis array name yiisoft yii2 redis version 2....