Laravel操作redis和緩存操作詳解
目錄
- 一:操作redis
- 1:redis拓展安裝
- 2:配置redis
- 3:操作redis
- 二:緩存操作
- 1:緩存配置
- 2:緩存操作
一:操作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)的話(huà),在目錄命令行執(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)文章!

網(wǎng)公網(wǎng)安備