laravel为不同的缓存系统提供了统一的api,缓存配置位于文件目录(config/catche.php)
主要的方法

Cache::put() 创建缓存(键,值,有效期(单位是秒))
Cache::get() 获取缓存
Cache::add() 只会在缓存项不存在的情况下添加数据到缓存,如果数据被成功返回 true,否则,返回 false
Cache::pull() 从缓存中获取缓存项然后删除,使用 pull 方法,如果缓存项不存在的话返回 null
Cache::forever() 用于持久化存储数据到缓存,这些值必须通过 forget 方法手动从缓存中移除
Cache::forget() 从缓存中移除缓存项数据
Cache::has() 用于判断缓存项是否存在,如果值为 null 或 false 该方法会返回 false

系统默认是文件缓存,缓存的目录位于,storage/framwork/cache/data

一缓存配置

laravel框架的缓存配置在config/cache.php文件中

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'),],],

(1)如果你选择了的database作为驱动的话,就需要修改stores内的database配置

'database' => ['driver' => 'database','table' => 'cache',//配置的缓存表名'connection' => null,//连接名,这个实在config/database.php文件配置的,不进行配置使用默认连接的数据库
],

你选择了database作为缓存驱动的话,在目录命令行执行

php artisan cache:table
php artisan migrate

这时候会在数据库身生成一个cache表

(2)选择了file作为驱动时file配置中

'file' => ['driver' => 'file','path' => storage_path('framework/cache/data'),//这里配置的是缓存数据保存地址
],

缓存文件在有效期后并不会删除文件,再次查询的时候才会删除value的对应文件。

Cache::flush();
Cache::put('name', 'willem', 10);
dump(Cache::has('name'));
dump(cache::get('name'));

(3):选择了redis作为驱动时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();
});

3:判断缓存是否存在

//如果值为 null 或 不存在返回false
Cache::has('key')

4:递增递减

increment 和 decrement 方法可以用来调整高速缓存中整数项的值。这两个方法都可以传入第二个可选参数,用来指示要递增或递减值的数量

注意:使用increment和decrement前提对应的缓存之前必须有缓存数据,不然返回NULL

Cache::increment('key');
Cache::increment('key', $amount);
Cache::decrement('key');
Cache::decrement('key', $amount);

5:删除

//从缓存中获取到数据之后再删除它,如果缓存中不存在该数据, 则返回 null
$value = Cache::pull('key');
//删除缓存
Cache::forget('key');
//清空缓存
Cache::flush();

如果你想要使用多种缓存

你可以使用下面这种形式操作缓存,其他方法同理

$value = Cache::store('file')->get('foo');//获取
Cache::store('redis')->put('bar', 'baz', 10);//设置

实战应用示例

$app_key = $this->get_app('app_key');
$access_token = $res_arr['result']['access_token'];
$ttl= 7200;
Cache::put($app_key, $access_token, $ttl);

laravel cache 缓存操作相关推荐

  1. laravel会话控制和缓存操作

    laravel17 一.会话控制(记忆) 会话控制的两种方式:利用会话控制方法控制类实现会话操作:直接将用户的会话控制操作封装成一个auth认证类: 常见应用:增删改查 session:默认存在文件中 ...

  2. 黑马lavarel教程---9、缓存操作

    黑马lavarel教程---9.缓存操作 一.总结 一句话总结: legend2项目中自己写的哪些文件操作都可以通过这里的缓存实现,简单方便 1.lavarel中如何使用后端主流的缓存如 Memcac ...

  3. Laravel 清理缓存 - 命令

    1.应用场景 使用laravel命令清除laravel程序缓存, 立马获取/达到想要效果. 2.学习/操作 1. 文档阅读 Artisan 控制台 | 进阶系列 | Laravel 8 中文文档  / ...

  4. .net System.Web.Caching.Cache缓存类使用详解(转载)

    转自:http://www.cnblogs.com/virusswb/articles/1681561.html net System.Web.Caching.Cache缓存类使用详解 System. ...

  5. 注释驱动的 Spring cache 缓存介绍--转载

    概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...

  6. 一种小型后台管理系统通用开发框架中的Cache缓存设计

    本篇博客记录一下我在实习的公司的后台管理系统开发框架中学习到的一种关于网站的缓存(Cache)的实现方法,我会在弄懂的基础上,将该方法在.net core上进行实现.因为公司开发都是基于.net fr ...

  7. 在ASP.NET Core中使用AOP来简化缓存操作

    前言 关于缓存的使用,相信大家都是熟悉的不能再熟悉了,简单来说就是下面一句话. 优先从缓存中取数据,缓存中取不到再去数据库中取,取到了在扔进缓存中去. 然后我们就会看到项目中有类似这样的代码了. pu ...

  8. 注解驱动的 Spring cache 缓存介绍

    概述 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术 ...

  9. 利用Cache缓存数据DataTable数据提高大数据量访问性能-.NET教程,数据库应用

    在数据量不大的情况下,程序怎么写基本上性能差别不大,但是当我们面对数以万计的数据的时候,我想性能就是个不得不考虑的问题了,每写一个方法,每填充一 笔数据都要考虑到性能问题,否则服务器将承担巨大的执行开 ...

最新文章

  1. 如何用git命令行上传本地代码到github
  2. Spring 中策略模式的 2 个经典应用
  3. python获取文本光标_python 文件的操作以及调整光标
  4. opencv计算brox光流_字节跳动计算机视觉算法实习生视频面试
  5. power designer数据流图_鲲云公开课 | 三分钟带你了解数据流架构
  6. 蓝桥杯第六届省赛JAVA真题----循环节长度
  7. 诗和远方:无题(五十二)- 写给认识的一个老姐的两只猫
  8. VS2010 书签 工具的使用方法
  9. 头发制作_【绘画教程】动漫人物的头发该怎么画?
  10. 思岚科技受邀2018高交会 携多项“黑科技”亮相
  11. yolov3从头实现(六)损失计算
  12. 给ApplicationContext容器中添加组件的方法(@Bean的使用)
  13. STM32固件库下载教程
  14. 计算机软件时间,时间校对软件
  15. Unity C#编程优化——枚举
  16. 职场晋升加薪:除了自己努力,这20条规则和方法你也要知道!
  17. Java学习-----文字版格斗游戏
  18. 终于有个高效率的排列组合算法
  19. 详解C# 枚举高级用法之Description
  20. 父亲给儿子的一封信:当我日渐老去的时候

热门文章

  1. OpenCV中LineTypes各枚举值(LINE_4 、LINE_8 、LINE_AA )的含义
  2. pytorch离线快速安装
  3. linux ec20指令,《EC20 — AT指令》
  4. 湖北计算机2019专科学校分数线,湖北技能高考计算机专科录取分数线及院校,计算机类学校有哪些...
  5. Java中单例模式----饿汉式(HungrySingLeton)和懒汉式(LazySingLeton)
  6. 作为一个J2EE软件攻城师
  7. 倍福--温度控制程序
  8. 文字转语音软件哪个好用
  9. 模拟器System分区写保护取消
  10. 数字孪生技术研究综述