laravel cache 缓存操作

绝地灬酷狼 2023-10-06 16:16 107阅读 0赞

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

  1. Cache::put() 创建缓存(键,值,有效期(单位是秒))
  2. Cache::get() 获取缓存
  3. Cache::add() 只会在缓存项不存在的情况下添加数据到缓存,如果数据被成功返回 true,否则,返回 false
  4. Cache::pull() 从缓存中获取缓存项然后删除,使用 pull 方法,如果缓存项不存在的话返回 null
  5. Cache::forever() 用于持久化存储数据到缓存,这些值必须通过 forget 方法手动从缓存中移除
  6. Cache::forget() 从缓存中移除缓存项数据
  7. 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:根据你所选的驱动配置

  1. 'stores' => [
  2. 'apc' => [
  3. 'driver' => 'apc',
  4. ],
  5. 'array' => [
  6. 'driver' => 'array',
  7. ],
  8. 'database' => [
  9. 'driver' => 'database',
  10. 'table' => 'cache',
  11. 'connection' => null,
  12. ],
  13. 'file' => [
  14. 'driver' => 'file',
  15. 'path' => storage_path('framework/cache/data'),
  16. ],
  17. 'memcached' => [
  18. 'driver' => 'memcached',
  19. 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
  20. 'sasl' => [
  21. env('MEMCACHED_USERNAME'),
  22. env('MEMCACHED_PASSWORD'),
  23. ],
  24. 'options' => [
  25. // Memcached::OPT_CONNECT_TIMEOUT => 2000,
  26. ],
  27. 'servers' => [
  28. [
  29. 'host' => env('MEMCACHED_HOST', '127.0.0.1'),
  30. 'port' => env('MEMCACHED_PORT', 11211),
  31. 'weight' => 100,
  32. ],
  33. ],
  34. ],
  35. 'redis' => [
  36. 'driver' => 'redis',
  37. 'connection' => 'cache',
  38. ],
  39. 'dynamodb' => [
  40. 'driver' => 'dynamodb',
  41. 'key' => env('AWS_ACCESS_KEY_ID'),
  42. 'secret' => env('AWS_SECRET_ACCESS_KEY'),
  43. 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
  44. 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
  45. 'endpoint' => env('DYNAMODB_ENDPOINT'),
  46. ],
  47. ],

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

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

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

  1. php artisan cache:table
  2. php artisan migrate

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

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

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

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

  1. Cache::flush();
  2. Cache::put('name', 'willem', 10);
  3. dump(Cache::has('name'));
  4. dump(cache::get('name'));

(3):选择了redis作为驱动时redis配置中

  1. 'redis' => [
  2. 'driver' => 'redis',
  3. 'connection' => 'default',//redis的连接名,对应config/database.php文件的redis配置,如果不进行配置使用默认的redis连接配置
  4. ],

二:缓存操作

1:设置缓存

  1. Cache::put('key', 'value', $minutes);
  2. //将不存在于缓存中的数据放入缓存中,如果存放成功返回 true ,否则返回 false
  3. Cache::add('key', 'value', $minutes);
  4. //数据永久存入缓存
  5. Cache::forever('key', 'value');
  6. //获取users缓存,如果不存在,执行第三个参数,将返回值存入缓存
  7. $value = Cache::remember('users', $minutes, function () {
  8. return DB::table('users')->get();
  9. });
  10. //获取users缓存,如果不存在,执行第三个参数,将返回值存入缓存并永久储存
  11. $value = Cache::rememberForever('users', function() {
  12. return DB::table('users')->get();
  13. });

2:获取缓存

  1. $value = Cache::get('key')
  2. //传递第二个参数,用来指定如果查找的数据不存在时,你希望返回的默认值
  3. $value = Cache::get('key', 'default');
  4. //第二个参数传递 Closure 作为默认值。如果指定的数据不存在于缓存中,将返回 Closure 的结果
  5. $value = Cache::get('key', function () {
  6. return DB::table(...)->get();
  7. });

3:判断缓存是否存在

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

4:递增递减

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

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

  1. Cache::increment('key');
  2. Cache::increment('key', $amount);
  3. Cache::decrement('key');
  4. Cache::decrement('key', $amount);

5:删除

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

如果你想要使用多种缓存

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

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

实战应用示例

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

发表评论

表情:
评论列表 (有 0 条评论,107人围观)

还没有评论,来说两句吧...

相关阅读

    相关 cache.php,缓存 - Cache

    缓存 配置 缓存用法 递增与递减 缓存标签 缓存事件 数据库缓存 配置 Laravel 为各种不同的缓存系统提供一致的 API 。缓存配置文件位在 config/cach

    相关 Caching 缓存技术

      如果我们的代码反复调用导致堆分配的函数,然后丢弃结果,这将创建不必要的垃圾。相反,我们应该存储对这些对象的引用并重用它们。这种技术称为缓存。 在下面的示例中,每次调用该代

    相关 Cache——缓存

    前言:    其实这是我在一本书中看到的一篇文章感觉写的挺有意思的,就谢谢自己的小感觉! 缓存是什么?    书中解释缓存原来指的是存放物品的场所。在当技术用语的