想要在YII2這個php框架中很好的使用redis鍵值存儲,那么首先就要推薦yii2-redis這個官方的github庫。這個庫能夠很好的幫助我們在Yii2框架中使用redis,它提供緩存,Session以及ActiveRecord模式的支持。
安裝yii2-redis庫
推薦使用composer安裝yii2-redis庫,在你的項目根目錄執行
php?composer.phar?require?--prefer-dist?yiisoft/yii2-redis:"~2.0.0"
或者將
"yiisoft/yii2-redis":?"~2.0.0"
加入你的composer.json文件里,之后運行composer update,墻內真的很慢,耐心等待即可。
配置redis
要正確的使用這個擴展,你必須在你的應用程序的配置文件內,配置Connection類,一般來說,配置文件是configweb.php。
在你的組件里加入redis項目,如下:
return?[ ????//.... ????'components'?=>?[ ????????'redis'?=>?[ ????????????'class'?=>?'yiiredisConnection', ????????????'hostname'?=>?'localhost', ????????????'port'?=>?6379, ????????????'database'?=>?0, ????????], ????] ];
如此之后,你便能正常的在yii2框架中使用redis。
示例
簡單使用
我們先來看一段最簡單的使用redis的代碼:
$redis?=?Yii::$app->redis; $key?=?'username'; if?($val?=?$redis->get($key))?{ ????return?['redis'?=>?$val]; }?else?{ ????$redis->set($key,?'Leon'); ????$redis->expire($key,?5); } return?['redis'?=>?'no?data'];
沒有一行注釋,但是就是一目了然是不是。
尋找username這個key,如果找不到,設置鍵值存儲,并且過期時間是5秒鐘。
這就是一個完整的使用redis的例子。
Cache
那么接下來,我們來看看怎么樣將redis用在緩存上。
同樣的,作為緩存使用,我們需要去配置文件里修改緩存項:
'components'?=>?[ ????'cache'?=>?[ ????????//?'class'?=>?'yiicachingFileCache', ????????'class'?=>?'yiiredisCache', ????], ],
如果你沒有配置過redis組件,那么還需要在cache下配置redis:
'components'?=>?[ ????'cache'?=>?[ ????????//?'class'?=>?'yiicachingFileCache', ????????'class'?=>?'yiiredisCache', ????????'redis'?=>?[ ????????????'hostname'?=>?'localhost', ????????????'port'?=>?6379, ????????????'database'?=>?0, ????????], ????], ],
示例代碼如下,通俗易懂也就不過多解釋了:
$cache?=?Yii::$app->cache; $key?=?'username'; if?($cache->exists($key))?{ ????return?['cache'?=>?$cache->get($key)]; }?else?{ ????$cache->set($key,?'Leon',?5); } return?['cache'?=>?'no?cache'];
Session
最后是redis用作session。也是要在組件中配置:
'components'?=>?[ ????'session'?=>?[ ????????'name'?=>?'advanced-frontend', ????????'class'?=>?'yiiredisSession' ????], ],
如果沒有配置過redis,同樣需要配置:
'components'?=>?[ ????'session'?=>?[ ????????'name'?=>?'advanced-frontend', ????????'class'?=>?'yiiredisSession', ????????'redis'?=>?[ ????????????'hostname'?=>?'localhost', ????????????'port'?=>?6379, ????????????'database'?=>?0, ????????], ????], ],
示例代碼如下:
$session?=?Yii::$app->session; $key?=?'username'; if?($session->has($key))?{ ????return?['session'?=>?$session->get($key)]; }?else?{ ????$session->set($key,?'Leon'); } return?['session'?=>?'no?session'];
在簡單的示范下,如何將redis這個高效的工具用好,則是考驗大家的能力了。加油吧!
PHP中文網,有大量免費的Yii入門教程,歡迎大家學習!