Laravel操作redis和缓存操作详解
作者:huaweichenai 发布时间:2023-05-25 02:19:29
一:操作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);//设置
来源:https://segmentfault.com/a/1190000043405188
猜你喜欢
- 原理采用Python requests发起请求监测的URL,检测Http响应状态及是否超时,如果Http状态异常或响应超时,则通过聚合云推的
- 在注册或购物车结帐的时候,需要用户填入个人资料,这个环节可以简练一下,我们只需客人填入邮政编码,然后就根据这个邮政编码,自动从数据库中取出相
- 一、什么要备份数据库 ?在现实IT世界里,我们使用的服务器硬件可能因为使用时间过长,而发生故障;Windows系列服务器有可能蓝屏或者感染病
- 目前是把图片存在mongodb数据库,实现一个方法,比如 访问 /get_pic/ID 能实现图片在浏览器打开,添加了一个状态,比如?fil
- // 1.采用计算属性来获取$store中的值computed: { listenstage() {
- 前言:经过一段时间的测试验证,决定使用RPM来做Golang服务的部署方式. 我们组关于代码的部署方式主要有这么几种,Python直接使用v
- numpy多维数组的创建多维数组(矩阵ndarray)ndarray的基本属性shape维度的大小ndim维度的个数dtype数据类型1.1
- Pycharm安装pywin32报错1、在pycharm的寻找并安装插件pywin32时报错大致意思是安装失败,建议的解决方案:尝试从系统终
- 科讯sql商业版中用到的ajax空间与分页函数,他们的js代码学习是非常不错的//ajax 控件 function Pa
- 本文实例为大家分享了Python管理Windows服务的具体代码,供大家参考,具体内容如下#!/usr/bin/python# encodi
- 有的时候,可能会遇到表格中出现重复的索引,在操作重复索引的时候可能要注意一些问题。一、判断索引是否重复a、Series索引重复判断s = S
- queue和pipe的区别: pipe用来在两个进程间通信。queue用来在多个进程间实现通信。 此两种方法为所有系统多进程通信的基本方法,
- 项目场景:最近在部署项目之后,运行出现报错:Expression #1 of SELECT list is not in GROUP BY
- 一、 什么是进程 / 线程1、 引论众所周知,CPU是计算机的核心,它承担了所有的计算任务。而操作系统是计算机的管理者,是一个大管家,它负责
- mysql字段的数据类型支持json格式,可以直接存储json数组和json对象。一、插入json数据的方式有两种1、以普通字符串形式插入,
- CSS布局中可以用javascript判断浏览器版本看如下的javascript脚本: if (window.XMLHt
- Django url pathDjango 路由在 urls.py 配置path('浏览器地址栏表示URL', '处
- 一、js中导致undefined的几种情况:1、变量声明过但没有赋值;2、获取对象中不存在的属性时;3、函数需要实参,但是调用时没有传参,形
- 导语周末、假期来了,七夕也快到了,又到一年中最一票难求的时候了!那些假期想回家、过节异地恋的小可爱们,能准时抢到回家(约会对象)的城市票嘛?
- 前言第一次处理视频素材可以手动用剪映来处理,然后再用代码进行自动化处理,不然连朝哪个方向自动化处理可能都不知道那清楚处理流程之后,怎么用Py