Laravel进阶系列笔记--(十四)Laravel 缓存的基础使用方法

作者: 温新

分类: 【Laravel】

阅读: 2190

时间: 2021-08-25 15:04:23

作者:温新

时间:2021-07-11

hi,我是温新,一名PHPer。

Laravel中缓存配置文件位于config/cache.php,支持多种驱动,如RedisMemcached文件缓存等。本篇文章记录缓存使用的基本方法。

在进行实例演示之前,先来熟悉下缓存基本方法的使用。

使用缓存之前确保安装安装了redis服务器与PHP redis扩展。

准备工作

1)修改.env文件将缓存驱动修改为redis

2)添加2个路由,分别用于设置和获取缓存数据

// 设置缓存
Route::get('a', function(){
});
// 获取缓存
Route::get('b', function(){
});

添加缓存

添加缓存数据

方法:put(key,name,seconds)

Route::get('a', function(){
	 // 不设置时间则为永久有效
    \Illuminate\Support\Facades\Cache::put('name','lisi');
    // 设置失效时间
    \Illuminate\Support\Facades\Cache::put('age',18,now()->addMinutes(10));
});

缓存不存在时添加

方法:add(key,value,seconds)

Route::get('a', function(){;
    \Illuminate\Support\Facades\Cache::add('nickname','李麻子',now()->addMinutes(10));
});

获取缓存

获取缓存数据

方法:get(key)

Route::get('b', function(){
    echo \Illuminate\Support\Facades\Cache::get('name');
    echo \Illuminate\Support\Facades\Cache::get('age');
    echo \Illuminate\Support\Facades\Cache::get('nickname');
});

若缓存数据不存在可以从使用闭包的方法从其他地方获取数据,如当缓存不存在时从数据库获取数据。

$value = Cache::get('key', function() {
    return DB::table(表名)->get();
});

检查缓存是否存在

方法:has(key)

Route::get('b', function(){
    if (\Illuminate\Support\Facades\Cache::has('nickname')) {
        return '无缓存';
    }
});

删除缓存

删除指定key

方法:forget(key)

Route::get('b', function(){
    \Illuminate\Support\Facades\Cache::forget('name');
});

通过有效期删除

方法:put()设置有效期删除缓存

\Illuminate\Support\Facades\Cache::put('name','lisi',0);

清除所有缓存

方法:flush()

\Illuminate\Support\Facades\Cache::flush();

永久删除缓存

方法:forever(key,value)

Route::get('b', function(){
    \Illuminate\Support\Facades\Cache::forever('name','wagnwu');
});

其它方法

增加/减少

incrementdecrement这两个方法只能用于调整缓存中的整数值。如一篇文章的阅读量。

// 一次增加1
Cache::increment('key');
// 一次增加10
Cache::increment('key', 10);
// 一次减少1
Cache::decrement('key');
//一次减少10
Cache::decrement('key', 10);

获取和存储

当要获取缓存中的所有文章时,若是缓存中不存在,则到数据库中去获取。

方法:remember(key,secondes,callback)

Route::get('b', function(){
    $posts = \Illuminate\Support\Facades\Cache::remember('posts',10,function(){
        return \Illuminate\Support\Facades\DB::table('posts')->get();
    });
});

方法:rememberForever(key,callback)永久存储

Route::get('b', function(){
    $posts = \Illuminate\Support\Facades\Cache::rememberForever('posts',function(){
        return \Illuminate\Support\Facades\DB::table('posts')->get();
    });
});

我是温新

每天进步一点点,就一点点

请登录后再评论