缓存系统

Laravel 为不同的缓存系统提供了统一的 API。缓存配置位于config/cache.php。在该文件中你可以指定在应用中默认使用哪个缓存驱动。Laravel 目前支持主流的缓存后端如Memcached 和 Redis 等。

主要方法:

  • Cache::put() 在缓存中存储数据
  • Cache::add() 只存储没有的数据
  • Cache::get() 从缓存中获取数据
  • Cache::forever() 数据永久存储
  • Cache::pull() 获取和删除
  • Cache::remember() 获取和存储
  • Cache::increment() 递增与递减值
  • Cache::forget() 从缓存中删除数据
  • Cache::has() 检查缓存项是否存在

系统默认是使用文件缓存,其缓存文件存储的位置位于(storage/framework/cache/data):

img

1、设置缓存数据

  1. 语法:Cache::put('key', 'value', $minutes);

注意:put如果该键已经存在,则直接覆盖原来的值,有效期必须设置,单位是分钟

  1. 语法:Cache::add('key', 'value', $minutes);

add 方法只会在缓存项不存在的情况下添加数据到缓存,如果数据被成功添加到缓存返回 true,否则,返回false:

注意:如果缓存的过期时间没有传递给 put 方法, 则缓存将永久有效

  1. 语法:Cache::forever('key', 'value');

forever 方法可用于持久化将数据存储到缓存中。因为这些数据不会过期,所以必须通过 forget 方法从缓存中手动删除它们

2、获取缓存数据

Cache Facade 的 get 方法用于从缓存中获取数据。如果该数据在缓存中不存在,那么该方法将返回 null 。。如果需要的话你可以传递第二个参数到 get 方法指定缓存项不存在时返回的自定义默认值:

  1. // 获取指定的key值
  2. $value = Cache::get('key');
  3. // 获取指定的key值,如果不存在,则使用默认值
  4. $value = Cache::get('key', 'default');

你甚至可以传递一个 Closure 作为默认值。如果指定的数据在缓存中不存在,将返回 Closure 的结果。传递闭包的方法允许你从数据库或其他外部服务中获取默认值

  1. $value = Cache::get('key', function () {
  2. return DB::table(...)->get();
  3. });

检查缓存项是否存在

has 方法可以用于判断缓存项是否存在。如果值为 null,则该方法将会返回 false

  1. if (Cache::has('key')) {
  2. //
  3. }

3、删除缓存数据

你可以使用 forget 方法从缓存中删除这些数据:

  1. Cache::forget('key');

你也可以通过提供零或者负的 TTL 值来删除这些数据:

  1. Cache::put('key', 'value', 0);
  2. Cache::put('key', 'value', -5);

你可以使用 flush 方法清空所有的缓存:并且删除对应的目录

  1. Cache::flush();

注意:清空缓存的方法并不会考虑缓存前缀,会将缓存中的所有内容删除。因此在清除与其它应用程序共享的缓存时,请慎重考虑。

如果你需要从缓存中获取到数据之后再删除它,你可以使用 pull 方法。和 get方法一样,如果缓存不存在,则返回 null一般设置一次性的存储的数据

  1. $value = Cache::pull('key');

4、缓存递增与递减值

incrementdecrement 方法可以用来调整缓存中整数项的值。这两个方法都可以传入第二个可选参数,这个参数用来指明要递增或递减的数量:一般会用作计数器

  1. // 递增
  2. Cache::increment('key');
  3. Cache::increment('key', $amount);
  4. // 递减
  5. Cache::decrement('key');
  6. Cache::decrement('key', $amount);

5、获取并存储

有时你可能想从缓存中获取一个数据,而当请求的缓存项不存在时,程序能为你存储一个默认值。例如,你可能想从缓存中获取所有用户,当缓存中不存在这些用户时,程序将从数据库将这些用户取出并放入缓存。你可以使用 Cache::remember 方法来实现:

  1. $value = Cache::remember('users', seconds,, function () {
  2. return DB::table('users')->get();
  3. });

如果缓存中不存在你想要的数据时,则传递给 remember 方法的 闭包 将被执行,然后将其结果返回并放置到缓存中。同时会设置一个指定有效期的缓存,方便下次直接使用。比较典型的操作就是在获取微信的accesstoken的时候可以使用。原因是accesstoken本身一天只有2000次的配额,而其有7200s的有效期,在有效期内可以不用去刷新请求。

还可以联合 remember 和 forever 方法,可以使用 rememberForever 方法从缓存中获取数据或者永久存储它:

  1. $value = Cache::rememberForever('users', function () {
  2. return DB::table('users')->get();
  3. });

①创建需要的路由

img

②创建test19方法实现相关代码操作

如果需要使用cache提供的方法,则需要先引入

img

img

img

img

经常使用的:add/put、get、has、forget、flush、remember

更多相关文章

  1. 14.)PHPWeb开发框架~Laravel操作数据库DB类CRUD增删改查的使用
  2. vue父组件与子组件的数据传递
  3. thinkphp多数据库访问 - 创建博客页面路由 - 多应用配置系统和博
  4. JS基本数据类型
  5. TP6之多数据库,路由设置与多应用模式
  6. 微信小程序数据操作、自定义事件、微信API、路由组件、变量作用
  7. 微信小程序介绍、配置、视图层、逻辑层、页面数据交互等知识点学
  8. PHP:【微信小程序】微信小程序数据交互,微信小程序判断/循环,微信
  9. 17.【TP6学习笔记】Session的开启赋值取值删除清空等操作

随机推荐

  1. android代码格式化方法小结
  2. android 笔记-scrollview滑动阴影取消
  3. Android摄像头相关问题记录
  4. android自动获取短信验证码
  5. 旋转对话框
  6. 【Android】Android中AlertDialog对话框
  7. Android7.0中文文档(API) -- EdgeEffect
  8. Android(六): What Android Is
  9. 清除app数据等同于设置中的清除数据
  10. Android 弹球游戏