当我们在读取DB资料时可能会占用大量 CPU 的资源让请求需要花几秒钟完成,这种情况我们会使用缓存,速度会比从DB存取快。
而 Laravel 有提供我们使用缓存的方法,例如: memcached,redis,file 等等。
我们可以打开 config/cache.php 来看看设定。
可以看到一开始有一个 default 设定
'default' => env('CACHE_DRIVER', 'file'),
预设是用 file 的方式进行缓存,我们就用这种方式来写写看吧。
Cache::store('file')->put('bar', 'baz', 600);
Cache::put('bar', 'baz', 600);
这边的范例是我们选择利用 file 来做缓存,但因为预设就是 file 所以也可以拿掉,第一个参数 'bar' 是 key 第二个参数是 'value' 第三个参数是缓存时间(秒),若我们这时候用
$value = Cache::get('bar');
这时候会回传 'baz',这个 get 方法可以传入第二个参数当作预设值,若 $value 回传 null,则我们会回传预设值。
第二个参数甚至可以传入一个 Closure
$value = Cache::get('bar', function () {
return DB::table(...)->get();
});
我们可以利用 pull 将缓存移除
$value = Cache::pull('bar');
OK~那我们用Cache实作功能,创建一个userName的command,接着开始写程序
public function handle()
{
$id = $this->argument('id');
if(Cache::has($id)){
$cryptName = Cache::get($id);
}
else {
$cryptName = User::select('name')->where('id', $id)->first();
Cache::put($id, $cryptName);
}
if($cryptName !== null){
$this->line(Crypt::decryptString($cryptName));
}else{
$this->line("Null");
}
return 0;
}
这边我们先判断 Cache 里面是否有 $id 这个 key,有就 get,没有就 DB seletct 出来,接着把他 put 进 Cache 里,然後 decrypt 後印出来
OK!今天就到这边罗~
<<: DAY27 linebot message Imagemap 介绍
>>: Day27 用python写UI-聊聊Treeview(一)
无法忽视着行字 XDDDDD The domain e-join.com is for sale.....
今天来谈谈 React Testing Library 中笔者常用到的一些功能,React Test...
符合Kerckhoffs的原则,即开源密码的算法和实现(例如kokke / tiny-AES-c)向...
Metrics - 观察系统的健康指标 系列文章 (1/6) - Metrics 与 Metricb...