Laravel进阶系列笔记--(十四)Laravel 缓存的基础使用方法
作者:温新
时间:2021-07-11
hi,我是温新,一名PHPer。
Laravel中缓存配置文件位于config/cache.php
,支持多种驱动,如Redis
、Memcached
、文件缓存
等。本篇文章记录缓存使用的基本方法。
在进行实例演示之前,先来熟悉下缓存基本方法的使用。
使用缓存之前确保安装安装了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');
});
其它方法
增加/减少
increment
和decrement
这两个方法只能用于调整缓存中的整数值。如一篇文章的阅读量。
// 一次增加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();
});
});
我是温新
每天进步一点点,就一点点
请登录后再评论