Laravel操作redis和緩存操作詳解
目錄
- 一:操作redis
- 1:redis拓展安裝
- 2:配置redis
- 3:操作redis
- 二:緩存操作
- 1:緩存配置
- 2:緩存操作
一:操作redis
1:redis拓展安裝
composer require predis/predis
或者你也可以通過 PECL 安裝 PhpRedis PHP 擴展,安裝方法比較復雜,個人不推薦
2:配置redis
在config/database.php文件中配置redis
(1):單個redis配置
"redis" => [ "client" => env("REDIS_CLIENT", "predis"),//別名,如果你安裝的是PhpRedis,將client值改為phpredis "default" => [ "host" => env("REDIS_HOST", "127.0.0.1"),//redis服務器主機 "password" => env("REDIS_PASSWORD", null),//redis服務器密碼 "port" => env("REDIS_PORT", 6379),//redis服務器端口 "database" => env("REDIS_DB", 0), ], "cache" => [ "host" => env("REDIS_HOST", "127.0.0.1"),//redis服務器主機 "password" => env("REDIS_PASSWORD", null),//redis服務器密碼 "port" => env("REDIS_PORT", 6379),//redis服務器端口 "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):設置redis
Redis::set("val1","asdasd");
(2):獲取redis
Redis::get("key")
(3):刪除redis
Redis::del("key");
二:緩存操作
1:緩存配置
laravel框架的緩存配置在config/cache.php文件中,配置參數有:
(1):配置cache的驅動
"default" => env("CACHE_DRIVER", "file")
Laravel 自帶了幾個不錯且可開箱即用的驅動
• file - 將 Session 保存在 framework/cache/data 中。
• cookie - Session 保存在安全加密的 Cookie 中。
• database - Session 保存在關系型數據庫中。
• memcached / redis - Sessions 保存在其中一個快速且基于緩存的存儲系統中。
• array - Sessions 保存在 PHP 數組中,不會被持久化。
(2):根據你所選的驅動配置
"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作為驅動的時,就需要修改stores內的database配置
"database" => [ "driver" => "database", "table" => "cache",//配置的緩存表名 "connection" => null,//連接名,這個是在config/database.php文件配置的,不進行配置使用默認連接的數據庫 ],
你選擇了database作為緩存驅動的話,在目錄命令行執行
php artisan cache:table php artisan migrate
這時候會在數據庫生成一個cache表用于存儲緩存數據
• 如果你選擇了file作為驅動時,就需要修改stores內的file配置
"file" => [ "driver" => "file", "path" => storage_path("framework/cache/data"),//這里配置的是緩存數據保存地址 ],
• 如果你選擇了redis作為驅動時,就需要修改stores內的redis配置
"redis" => [ "driver" => "redis", "connection" => "default",//redis的連接名,對應config/database.php文件的redis配置,如果不進行配置使用默認的redis連接配置 ],
2:緩存操作
(1):設置緩存
Cache::put("key", "value", $minutes); //將不存在于緩存中的數據放入緩存中,如果存放成功返回 true ,否則返回 false Cache::add("key", "value", $minutes); //數據永久存入緩存 Cache::forever("key", "value"); //獲取users緩存,如果不存在,執行第三個參數,將返回值存入緩存 $value = Cache::remember("users", $minutes, function () { return DB::table("users")->get(); }); //獲取users緩存,如果不存在,執行第三個參數,將返回值存入緩存并永久儲存 $value = Cache::rememberForever("users", function() { return DB::table("users")->get(); });
(2):獲取緩存
$value = Cache::get("key") //傳遞第二個參數,用來指定如果查找的數據不存在時,你希望返回的默認值 $value = Cache::get("key", "default"); //第二個參數傳遞 Closure 作為默認值。如果指定的數據不存在于緩存中,將返回 Closure 的結果 $value = Cache::get("key", function () { return DB::table(...)->get(); }); //判斷緩存是否存在,如果值為 null 或 不存在返回false Cache::has("key")
(3):刪除緩存
//從緩存中獲取到數據之后再刪除它,如果緩存中不存在該數據, 則返回 null $value = Cache::pull("key"); //刪除緩存 Cache::forget("key"); //清空緩存 Cache::flush();
(4):緩存遞增遞減
increment 和 decrement 方法可以用來調整高速緩存中整數項的值。這兩個方法都可以傳入第二個可選參數,用來指示要遞增或遞減值的數量
注意:使用increment和decrement前提對應的緩存之前必須有緩存數據,不然返回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);//設置
以上就是Laravel操作redis和緩存操作詳解的詳細內容,更多關于Laravel操作redis 緩存操作的資料請關注其它相關文章!
