您现在的位置是:网站首页>>PHP>>laravel

laravel 缓存操作

发布时间:2018-12-12 16:17:11作者:wangjian浏览量:694点赞量:0

    一缓存配置

    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' => 'default',
            ],
        ],

    (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'),//这里配置的是缓存数据保存地址
            ],

    (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);//设置


上一篇:laravel 邮件发送

下一篇:laravel 使用redis

0 +1