当前位置: 首页 > news >正文

laravel操作redis和缓存操作

一:操作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);//设置

http://www.lryc.cn/news/963.html

相关文章:

  • 目标检测论文阅读:GaFPN算法笔记
  • 【转】Generative Pretrained Transformer
  • day34|343. 整数拆分、96.不同的二叉搜索树
  • WeNet - 初识
  • 为什么各个企业都在创建FAQ、常见问题页面?
  • 【React-Router】路由传参,路由嵌套,手动导航,路由文件配置
  • 面向对象分析与设计(OOAD)
  • 数据库调优
  • OpenStack云平台搭建(3) | 部署Glance
  • 软件评测师考试总结
  • 小白系列Vite-Vue3-TypeScript:009-屏幕适配
  • 查找企业微信聊天记录,会话存档有多重要
  • C语言经典编程题100例(1-20)
  • 小白系列Vite-Vue3-TypeScript:008-安装配置mock
  • OnGUI Box 控件||Unity 3D OnGUI 常用控件
  • shiro721——CVE-2019-12422
  • 爬虫JS逆向思路 - - 扣JS(data解密)
  • Android 进阶——Framework 核心之Binder 相关预备理论(一)
  • 【23种设计模式】结构型模式详细介绍
  • 接口自动化实战-postman
  • 前端跨域方案简单总结
  • 【HTML】HTML 表格 ② ( 表头单元格标签 | 表格标题标签 )
  • 常用的辅助类2(StringBuilder、StringBuffer、处理时间相关的类、对象比较器)
  • anaconda下pytorchCPU GUP安装及问题记录
  • 香港中文大学MISC Lab GNN团队: 异质图神经网络研究进展从谱的角度看待(图)对比学习(图自监督学习)
  • C#开发的OpenRA的Enumerable.Concat方法应用
  • 前端知识点总结(自参)
  • [ 靶场环境片 ] kali-linux采用Docker 搭建 pikachu(特别详细)
  • 阿里6面,成功唬住面试官拿了27K,软件测试面试也没有传说中那么难吧....
  • 为什么静默安装未经过数字签名的驱动是不可行的?