對(duì)Laravel - Redis 緩存的理解

最近在看redis的一些用法,下面就來(lái)說(shuō)說(shuō)我的使用歷程!redis在很多項(xiàng)目中使用頻率很高!而且技術(shù)的提升redis也是必會(huì)使用的!多做總結(jié),慢慢的吃成技術(shù)的‘胖紙’!

首先Redis的使用場(chǎng)景想必大家多多少少都了解一些了。比如新浪的首頁(yè)那么多模塊,那么多文章,如果讀數(shù)據(jù)庫(kù)是不是壓力特別大,反應(yīng)是不是特別慢?但是為什么新浪為什么能很快的響應(yīng)頁(yè)面?其中一部分功勞就是靠的Reids的緩存技術(shù)。
1.Redis不僅僅支持簡(jiǎn)單的k/v類型的數(shù)據(jù),同時(shí)還提供list,set,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。
2.Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。
3.Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時(shí)候可以再次加載進(jìn)行使用。
Laravel中 使用的Redis
在使用 Redis 之前,你必須通過(guò) Composer 安裝 predis/predis 擴(kuò)展包
composer require "predis/predis" (直接安裝最新的即可)
然后配置 應(yīng)用程序的 Redis 設(shè)置都在 config/database.php 配置文件中。在這個(gè)文件里,你可以看到 redis 數(shù)組里面包含了應(yīng)用程序使用的 Redis 服務(wù)器:

'redis' => [
    'cluster' => false,
    'default' => [
        'host'     => '127.0.0.1',
        'port'     => 6379,
        'database' => 0,
    ],
],

STRING類型 - 寫入字符串類型的redis

class PhotoController extends Controller  
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $key = 'STRING:TEST';
        $value = 'Hello-World';
        // 寫入一個(gè)字符串類型的redis
        $info = \Redis::Set($key,$value);
        dd($info);
        return view('test');
    }
}

讀取相應(yīng)的字符串

class PhotoController extends Controller  
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $key = 'STRING:TEST';
        // 讀取一個(gè)字符串類型的redis
        $info = \Redis::get($key);
        dd($info);
        return view('test');
    }
}

和redis語(yǔ)法同樣的 字串也有incr和decr等遞增、遞減...

HASH類型

存數(shù)據(jù)

class PhotoController extends Controller  
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $key = 'HASH:TEST';
        $names = ['id'=>'99',
                  'name'=>'AXiBa',
                  'age'=>'23',
                  'tel'=>'13995578699',
                  'addtime'=>'1231231233'];
        // 將數(shù)據(jù)寫入hash
        $info = \Redis::hMset($key,$names);
        dd($info);
        return view('test');
    }
}

取數(shù)據(jù)(取所有)

class PhotoController extends Controller  
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $key = 'HASH:TEST';
        $names = ['id'=>'99',
                  'name'=>'AXiBa',
                  'age'=>'23',
                  'tel'=>'13995578699',
                  'addtime'=>'1231231233'];
        // 取出hash里的數(shù)據(jù)
        $info = \Redis::hGetall($key);
        dd($info);
        return view('test');
    }
}

取數(shù)據(jù)(取個(gè)別字段)

class PhotoController extends Controller  
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $key = 'HASH:TEST';
        $names = ['id'=>'99',
                  'name'=>'AXiBa',
                  'age'=>'23',
                  'tel'=>'13995578699',
                  'addtime'=>'1231231233'];
        // 取出hash里的 某一個(gè)字段的數(shù)據(jù)
        $info = \Redis::hGet($key,'name');
        dd($info);
        return view('test');
    }
}
// 判斷這個(gè)redis key是否存在
\Redis::exists($key);

SET類型

寫入一個(gè)無(wú)序集合(數(shù)據(jù)插入無(wú)順序)

class PhotoController extends Controller  
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $key = 'SET:TEST';
        $value = ['a','b','c','d','e'];
        $info = \Redis::sadd($key,$value);
         $info = \Redis::smembers($key);
        dd($info);
        return view('test');
    }
}

求兩個(gè)集合的交集

class PhotoController extends Controller  
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $key = 'SET:TEST';
        $key1 = 'SET:TEST:1';
        $value = ['a','b','c','d','e'];
        $value1 = ['a','b','c','1','2'];
        // 寫入另一個(gè)集合
        \Redis::sadd($key1,$value1);
        // 交集
        $info = \Redis::sinter($key,$key1);
        dd($info);
        return view('test');
    }
}

求兩個(gè)集合的并集

class PhotoController extends Controller  
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $key = 'SET:TEST';
        $key1 = 'SET:TEST:1';
        $value = ['a','b','c','d','e'];
        $value1 = ['a','b','c','1','2'];
        // 并集
        $info = \Redis::sunion($key,$key1);
        dd($info);
        return view('test');
    }
}

求兩個(gè)集合的差集

class PhotoController extends Controller  
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $key = 'SET:TEST';
        $key1 = 'SET:TEST:1';
        $value = ['a','b','c','d','e'];
        $value1 = ['a','b','c','1','2'];
        // 差集
        $info = \Redis::sdiff($key,$key1);
        dd($info);
        return view('test');
    }
}

哪個(gè)key在前,就以哪個(gè)key的值為基準(zhǔn)。。


參考 redis中文官網(wǎng) http://www.redis.cn/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容