安裝
Redis安裝
注意Redis原生并不支持在windows上運行。
在ubuntu上安裝redis非常簡單:apt-get install redis
即可篷牌,或者下載官網(wǎng)源碼來自己編譯安裝宴咧。
PHP Redis 擴展安裝
在laravel 中想要使用redis非常簡單示弓,只需要將predis擴展引入到項目中即可:composer require predis/predis
配置
在laravel 5.1中已經(jīng)為我們配置好了,開箱即可用堪嫂。
相關配置保存在config/database redis配置項里面窄锅。同時laravel 已經(jīng)在config/app文件里面提前添加了service provider 和facade创千,所以可以馬上使用laravel為我們提供的redis方法缰雇。
Redis命令
詳細的redis命令可以查看https://redis.io/commands官網(wǎng)提供的命令,推薦按照string, list, set, sorted set, hash五種分類來對命令查找學習追驴⌒涤矗可以使用redis-cli來練習redis命令!
在laravel中殿雪,我們可以使用所有的redis命令暇咆,基本用法如下:
Redis::zincrby("posts", 1, "post:{$id}:visitors");
實現(xiàn)博客文章統(tǒng)計與顯示熱門博文功能
需求1:實現(xiàn)博客文章統(tǒng)計
實現(xiàn):每當用戶瀏覽一次文章,就自動給文章瀏覽數(shù)+1
/**
* 每次用戶訪問文章丙曙,就自動給文章閱讀數(shù)量+1
* 為了區(qū)分redis文章統(tǒng)計變量爸业,可以使用":"來構建redis命名空間
* @param $id
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function show($id)
{
$discussion = Discussion::findOrFail($id);
$html = $this->markdown->markdown($discussion->text);
$visitors = Redis::zincrby("posts", 1, "zshanjun:post:{$id}:visitors");
return view('forum.show',compact('discussion','html', 'visitors'));
}
需求2:顯示熱門博文
/**
* 顯示最受歡迎的10篇文章
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
*/
public function popular()
{
$posts = Redis::zrevrange('posts', 0, 9);
if (!$posts) {
return redirect('/');
}
$ids = [];
foreach ($posts as $post) {
array_push($ids, explode(":", $post)[2]);
}
$ids_ordered = implode(',', $ids);
$discussions = Discussion::whereIn('id', $ids)->orderByRaw(DB::raw("FIELD(id, $ids_ordered)"))->get();
foreach ($discussions as $discussion) {
$id = $discussion->id;
$visitors = Redis::zscore('posts', "zshanjun:post:{$id}:visitors");
$discussion['visitors'] = $visitors;
}
return view('forum.popular', compact('discussions'));
}