Laravel操作redis和緩存操作詳解
一:操作redis
1:redis拓展安裝
composer require predis/predis
或者你也可以通過(guò) PECL 安裝 PhpRedis PHP 擴(kuò)展,安裝方法比較復(fù)雜,個(gè)人不推薦
2:配置redis
在config/database.php文件中配置redis
(1):?jiǎn)蝹€(gè)redis配置
'redis' => [ 'client' => env('REDIS_CLIENT', 'predis'),//別名,如果你安裝的是PhpRedis,將client值改為phpredis 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'),//redis服務(wù)器主機(jī) 'password' => env('REDIS_PASSWORD', null),//redis服務(wù)器密碼 'port' => env('REDIS_PORT', 6379),//redis服務(wù)器端口 'database' => env('REDIS_DB', 0), ], 'cache' => [ 'host' => env('REDIS_HOST', '127.0.0.1'),//redis服務(wù)器主機(jī) 'password' => env('REDIS_PASSWORD', null),//redis服務(wù)器密碼 'port' => env('REDIS_PORT', 6379),//redis服務(wù)器端口 'database' => env('REDIS_CACHE_DB', 1), ], ],
(2):redis集群配置
'redis' => [ 'client' => env('REDIS_CLIENT', 'predis'), 'clusters' => [ 'default' => [ [ 'host' => env('REDIS_HOST', 'localhost'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], ], ], ],
3:操作redis
(1):設(shè)置redis
Redis::set('val1','asdasd');
(2):獲取redis
Redis::get('key')
(3):刪除redis
Redis::del('key');
二:緩存操作
1:緩存配置
laravel框架的緩存配置在config/cache.php文件中,配置參數(shù)有:
(1):配置cache的驅(qū)動(dòng)
'default' => env('CACHE_DRIVER', 'file')
Laravel 自帶了幾個(gè)不錯(cuò)且可開(kāi)箱即用的驅(qū)動(dòng)
• file - 將 Session 保存在 framework/cache/data 中。
• cookie - Session 保存在安全加密的 Cookie 中。
• database - Session 保存在關(guān)系型數(shù)據(jù)庫(kù)中。
• memcached / redis - Sessions 保存在其中一個(gè)快速且基于緩存的存儲(chǔ)系統(tǒng)中。
• array - Sessions 保存在 PHP 數(shù)組中,不會(huì)被持久化。
(2):根據(jù)你所選的驅(qū)動(dòng)配置
'stores' => [ 'apc' => [ 'driver' => 'apc', ], 'array' => [ 'driver' => 'array', ], 'database' => [ 'driver' => 'database', 'table' => 'cache', 'connection' => null, ], 'file' => [ 'driver' => 'file', 'path' => storage_path('framework/cache/data'), ], 'memcached' => [ 'driver' => 'memcached', 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), 'sasl' => [ env('MEMCACHED_USERNAME'), env('MEMCACHED_PASSWORD'), ], 'options' => [ // Memcached::OPT_CONNECT_TIMEOUT => 2000, ], 'servers' => [ [ 'host' => env('MEMCACHED_HOST', '127.0.0.1'), 'port' => env('MEMCACHED_PORT', 11211), 'weight' => 100, ], ], ], 'redis' => [ 'driver' => 'redis', 'connection' => 'cache', ], 'dynamodb' => [ 'driver' => 'dynamodb', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), 'endpoint' => env('DYNAMODB_ENDPOINT'), ], ],
• 如果你選擇了的database作為驅(qū)動(dòng)的時(shí),就需要修改stores內(nèi)的database配置
'database' => [ 'driver' => 'database', 'table' => 'cache',//配置的緩存表名 'connection' => null,//連接名,這個(gè)是在config/database.php文件配置的,不進(jìn)行配置使用默認(rèn)連接的數(shù)據(jù)庫(kù) ],
你選擇了database作為緩存驅(qū)動(dòng)的話,在目錄命令行執(zhí)行
php artisan cache:table php artisan migrate
這時(shí)候會(huì)在數(shù)據(jù)庫(kù)生成一個(gè)cache表用于存儲(chǔ)緩存數(shù)據(jù)
• 如果你選擇了file作為驅(qū)動(dòng)時(shí),就需要修改stores內(nèi)的file配置
'file' => [ 'driver' => 'file', 'path' => storage_path('framework/cache/data'),//這里配置的是緩存數(shù)據(jù)保存地址 ],
• 如果你選擇了redis作為驅(qū)動(dòng)時(shí),就需要修改stores內(nèi)的redis配置
'redis' => [ 'driver' => 'redis', 'connection' => 'default',//redis的連接名,對(duì)應(yīng)config/database.php文件的redis配置,如果不進(jìn)行配置使用默認(rèn)的redis連接配置 ],
2:緩存操作
(1):設(shè)置緩存
Cache::put('key', 'value', $minutes); //將不存在于緩存中的數(shù)據(jù)放入緩存中,如果存放成功返回 true ,否則返回 false Cache::add('key', 'value', $minutes); //數(shù)據(jù)永久存入緩存 Cache::forever('key', 'value'); //獲取users緩存,如果不存在,執(zhí)行第三個(gè)參數(shù),將返回值存入緩存 $value = Cache::remember('users', $minutes, function () { return DB::table('users')->get(); }); //獲取users緩存,如果不存在,執(zhí)行第三個(gè)參數(shù),將返回值存入緩存并永久儲(chǔ)存 $value = Cache::rememberForever('users', function() { return DB::table('users')->get(); });
(2):獲取緩存
$value = Cache::get('key') //傳遞第二個(gè)參數(shù),用來(lái)指定如果查找的數(shù)據(jù)不存在時(shí),你希望返回的默認(rèn)值 $value = Cache::get('key', 'default'); //第二個(gè)參數(shù)傳遞 Closure 作為默認(rèn)值。如果指定的數(shù)據(jù)不存在于緩存中,將返回 Closure 的結(jié)果 $value = Cache::get('key', function () { return DB::table(...)->get(); }); //判斷緩存是否存在,如果值為 null 或 不存在返回false Cache::has('key')
(3):刪除緩存
//從緩存中獲取到數(shù)據(jù)之后再刪除它,如果緩存中不存在該數(shù)據(jù), 則返回 null $value = Cache::pull('key'); //刪除緩存 Cache::forget('key'); //清空緩存 Cache::flush();
(4):緩存遞增遞減
increment 和 decrement 方法可以用來(lái)調(diào)整高速緩存中整數(shù)項(xiàng)的值。這兩個(gè)方法都可以傳入第二個(gè)可選參數(shù),用來(lái)指示要遞增或遞減值的數(shù)量
注意:使用increment和decrement前提對(duì)應(yīng)的緩存之前必須有緩存數(shù)據(jù),不然返回NULL
Cache::increment('key'); Cache::increment('key', 2); Cache::decrement('key'); Cache::decrement('key', 2);
(5):使用多種緩存方式
如果你想要使用多種緩存,你可以使用下面這種形式操作緩存,其他方法同理
$value = Cache::store('file')->get('foo');//獲取 Cache::store('redis')->put('bar', 'baz', 10);//設(shè)置
以上就是Laravel操作redis和緩存操作詳解的詳細(xì)內(nèi)容,更多關(guān)于Laravel操作redis 緩存操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
PHP使用正則表達(dá)式實(shí)現(xiàn)過(guò)濾非法字符串功能示例
這篇文章主要介紹了PHP使用正則表達(dá)式實(shí)現(xiàn)過(guò)濾非法字符串功能,結(jié)合留言板數(shù)據(jù)提交功能示例分析了php使用正則表達(dá)式preg_replace函數(shù)進(jìn)行字符串正則替換相關(guān)操作技巧,需要的朋友可以參考下2018-06-06php事件驅(qū)動(dòng)化設(shè)計(jì)詳解
這篇文章主要介紹了php事件驅(qū)動(dòng)化設(shè)計(jì),結(jié)合實(shí)例形式較為詳細(xì)的分析了php事件驅(qū)動(dòng)化所涉及的信號(hào)量、共享內(nèi)存與進(jìn)程間通信相關(guān)概念與操作技巧,需要的朋友可以參考下2016-11-11PHP學(xué)習(xí)散記_編碼(json_encode 中文不顯示)
今天使用json_encode轉(zhuǎn)換數(shù)組的時(shí)候,出現(xiàn)了中文不顯示的情況。2011-11-11淺析虛擬主機(jī)服務(wù)器php fsockopen函數(shù)被禁用的解決辦法
以下是對(duì)虛擬主機(jī)服務(wù)器php fsockopen函數(shù)被禁用的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08php變量與JS變量實(shí)現(xiàn)不通過(guò)跳轉(zhuǎn)直接交互的方法
這篇文章主要介紹了php變量與JS變量實(shí)現(xiàn)不通過(guò)跳轉(zhuǎn)直接交互的方法,涉及php與javascript變量傳輸及代碼混編相關(guān)操作技巧,需要的朋友可以參考下2017-08-08六酷社區(qū)論壇HOME頁(yè)清新格調(diào)免費(fèi)版 下載
六酷社區(qū)論壇HOME頁(yè)清新格調(diào)免費(fèi)版 下載...2007-03-03