• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

laravel操作redis和缓存操作

武飞扬头像
huaweichenai
帮助1

一:操作redis

1:redis拓展安装

composer require predis/predis

或者你也可以通过 PECL 安装 PhpRedis PHP 扩展,安装方法比较复杂,个人不推荐

2:配置redis

在config/database.php文件中配置redis

(1):单个redis配置

  1.  
    'redis' => [
  2.  
     
  3.  
    'client' => env('REDIS_CLIENT', 'predis'),//别名,如果你安装的是PhpRedis,将client值改为phpredis
  4.  
     
  5.  
    'default' => [
  6.  
    'host' => env('REDIS_HOST', '127.0.0.1'),//redis服务器主机
  7.  
    'password' => env('REDIS_PASSWORD', null),//redis服务器密码
  8.  
    'port' => env('REDIS_PORT', 6379),//redis服务器端口
  9.  
    'database' => env('REDIS_DB', 0),
  10.  
    ],
  11.  
     
  12.  
    'cache' => [
  13.  
    'host' => env('REDIS_HOST', '127.0.0.1'),//redis服务器主机
  14.  
    'password' => env('REDIS_PASSWORD', null),//redis服务器密码
  15.  
    'port' => env('REDIS_PORT', 6379),//redis服务器端口
  16.  
    'database' => env('REDIS_CACHE_DB', 1),
  17.  
    ],
  18.  
     
  19.  
    ],
学新通

(2):redis集群配置

  1.  
    'redis' => [
  2.  
     
  3.  
    'client' => env('REDIS_CLIENT', 'predis'),
  4.  
     
  5.  
    'clusters' => [
  6.  
    'default' => [
  7.  
    [
  8.  
    'host' => env('REDIS_HOST', 'localhost'),
  9.  
    'password' => env('REDIS_PASSWORD', null),
  10.  
    'port' => env('REDIS_PORT', 6379),
  11.  
    'database' => 0,
  12.  
    ],
  13.  
    ],
  14.  
    ],
  15.  
     
  16.  
    ],
学新通

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):根据你所选的驱动配置

  1.  
    'stores' => [
  2.  
     
  3.  
    'apc' => [
  4.  
    'driver' => 'apc',
  5.  
    ],
  6.  
     
  7.  
    'array' => [
  8.  
    'driver' => 'array',
  9.  
    ],
  10.  
     
  11.  
    'database' => [
  12.  
    'driver' => 'database',
  13.  
    'table' => 'cache',
  14.  
    'connection' => null,
  15.  
    ],
  16.  
     
  17.  
    'file' => [
  18.  
    'driver' => 'file',
  19.  
    'path' => storage_path('framework/cache/data'),
  20.  
    ],
  21.  
     
  22.  
    'memcached' => [
  23.  
    'driver' => 'memcached',
  24.  
    'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
  25.  
    'sasl' => [
  26.  
    env('MEMCACHED_USERNAME'),
  27.  
    env('MEMCACHED_PASSWORD'),
  28.  
    ],
  29.  
    'options' => [
  30.  
    // Memcached::OPT_CONNECT_TIMEOUT => 2000,
  31.  
    ],
  32.  
    'servers' => [
  33.  
    [
  34.  
    'host' => env('MEMCACHED_HOST', '127.0.0.1'),
  35.  
    'port' => env('MEMCACHED_PORT', 11211),
  36.  
    'weight' => 100,
  37.  
    ],
  38.  
    ],
  39.  
    ],
  40.  
     
  41.  
    'redis' => [
  42.  
    'driver' => 'redis',
  43.  
    'connection' => 'cache',
  44.  
    ],
  45.  
     
  46.  
    'dynamodb' => [
  47.  
    'driver' => 'dynamodb',
  48.  
    'key' => env('AWS_ACCESS_KEY_ID'),
  49.  
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
  50.  
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
  51.  
    'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
  52.  
    'endpoint' => env('DYNAMODB_ENDPOINT'),
  53.  
    ],
  54.  
     
  55.  
    ],
学新通
  • 如果你选择了的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表用于存储缓存数据

  • 如果你选择了file作为驱动时,就需要修改stores内的file配置

  1.  
    'file' => [
  2.  
    'driver' => 'file',
  3.  
    'path' => storage_path('framework/cache/data'),//这里配置的是缓存数据保存地址
  4.  
    ],
  • 如果你选择了redis作为驱动时,就需要修改stores内的redis配置

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

2:缓存操作

(1):设置缓存

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

(2):获取缓存

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

(3):删除缓存

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

(4):缓存递增递减

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

注意:使用increment和decrement前提对应的缓存之前必须有缓存数据,不然返回NULL
  1.  
    Cache::increment('key');
  2.  
    Cache::increment('key', 2);
  3.  
    Cache::decrement('key');
  4.  
    Cache::decrement('key', 2);

(5):使用多种缓存方式

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

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfcihi
系列文章
更多 icon
同类精品
更多 icon
继续加载