Content

Laravel操作redis和缓存操作详解(laravel cache remember 并发)干货分享

文章摘要

这篇文章详细介绍了如何使用Redis和缓存技术在 Laravel 应用中进行高效操作。主要内容包括: 1. **Redis安装与配置**:通过composer安装或PECL(不推荐)安装Redis扩展。在`config/database.php`中配置单个Redis或集群配置,包括host、port、database等参数。 2. **缓存操作**:在`config/cache.php`中根据驱动(如file、memcached、Redis等)配置缓存存储结构。详细说明了设置、获取、删除缓存的方法,以及批量操作(如批量删除、批量获取)的实现。 3. **缓存类型**:介绍了多种缓存类型,如APC、数组、数据库缓存、Memcached、Redis等,并详细说明了如何配置和使用这些缓存类型。 文章还提供了使用Laravel缓存类(如Cache::put、Cache::get、Cache::forget等)的方法,以及如何高效地进行缓存操作。文章强调了Redis和缓存在提升应用性能中的重要性。 总结:文章全面讲解了Redis和缓存技术的安装、配置和使用方法,适合想深入了解缓存优化的开发者阅读。


目录一:操作redis1:redis拓展安装2:配置redis3:操作redis二:缓存操作1:缓存配置2:缓存操作
composer require predis/predis

或者你也可以通过 PECL 安装 PhpRedis PHP 扩展,安装方法比较复杂,个人不推荐

在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, ], ], ], ],

(1):设置redis

Redis::set(‘val1′,’asdasd’);

(2):获取redis

Redis::get(‘key’)

(3):删除redis

Redis::del(‘key’);

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连接配置 ],

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

您可能感兴趣的文章:使用Redis缓存时高效的批量删除的几种方案redis如何清理缓存redis实现多级缓存同步方案详解odoo中使用redis实现缓存的步骤