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 缓存操作的资料请关注其它相关文章!