一:操作redis
1:redis拓展安装
1 | composer require predis /predis |
或者你也可以通过 PECL 安装 PhpRedis PHP 扩展,安装方法比较复杂,个人不推荐
2:配置redis
在config/database.php文件中配置redis
(1):单个redis配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | '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集群配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | '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
1 | Redis::set( 'val1' , 'asdasd' ); |
(2):获取redis
1 | Redis::get( 'key' ) |
(3):删除redis
1 | Redis::del( 'key' ); |
二:缓存操作
1:缓存配置
laravel框架的缓存配置在config/cache.php文件中,配置参数有:
(1):配置cache的驱动
1 | 'default' => env( 'CACHE_DRIVER' , 'file' ) |
Laravel 自带了几个不错且可开箱即用的驱动
• file – 将 Session 保存在 framework/cache/data 中。
• cookie – Session 保存在安全加密的 Cookie 中。
• database – Session 保存在关系型数据库中。
• memcached / redis – Sessions 保存在其中一个快速且基于缓存的存储系统中。
• array – Sessions 保存在 PHP 数组中,不会被持久化。
(2):根据你所选的驱动配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | '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配置
1 2 3 4 5 | 'database' => [ 'driver' => 'database' , 'table' => 'cache' , //配置的缓存表名 'connection' => null, //连接名,这个是在config/database.php文件配置的,不进行配置使用默认连接的数据库 ], |
你选择了database作为缓存驱动的话,在目录命令行执行
1 2 | php artisan cache:table php artisan migrate |
这时候会在数据库生成一个cache表用于存储缓存数据
• 如果你选择了file作为驱动时,就需要修改stores内的file配置
1 2 3 4 | 'file' => [ 'driver' => 'file' , 'path' => storage_path( 'framework/cache/data' ), //这里配置的是缓存数据保存地址 ], |
• 如果你选择了redis作为驱动时,就需要修改stores内的redis配置
1 2 3 4 | 'redis' => [ 'driver' => 'redis' , 'connection' => 'default' , //redis的连接名,对应config/database.php文件的redis配置,如果不进行配置使用默认的redis连接配置 ], |
2:缓存操作
(1):设置缓存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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):获取缓存
1 2 3 4 5 6 7 8 9 10 11 12 | $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):删除缓存
1 2 3 4 5 6 | //从缓存中获取到数据之后再删除它,如果缓存中不存在该数据, 则返回 null $value = Cache::pull( 'key' ); //删除缓存 Cache::forget( 'key' ); //清空缓存 Cache:: flush (); |
(4):缓存递增递减
increment 和 decrement 方法可以用来调整高速缓存中整数项的值。这两个方法都可以传入第二个可选参数,用来指示要递增或递减值的数量
注意:使用increment和decrement前提对应的缓存之前必须有缓存数据,不然返回NULL
1 2 3 4 | Cache::increment( 'key' ); Cache::increment( 'key' , 2); Cache::decrement( 'key' ); Cache::decrement( 'key' , 2); |
(5):使用多种缓存方式
如果你想要使用多种缓存,你可以使用下面这种形式操作缓存,其他方法同理
1 2 | $value = Cache::store( 'file' )->get( 'foo' ); //获取 Cache::store( 'redis' )->put( 'bar' , 'baz' , 10); //设置 |
以上就是Laravel操作redis和缓存操作详解的详细内容,更多关于Laravel操作redis 缓存操作的资料请关注IT俱乐部其它相关文章!