Day28 跟着官方文件学习Laravel-cache

当我们在读取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.....

[Day29] React Testing Library 的一些实用的小技巧

今天来谈谈 React Testing Library 中笔者常用到的一些功能,React Test...

Kerckhoffs的原则-开源(Open source)

符合Kerckhoffs的原则,即开源密码的算法和实现(例如kokke / tiny-AES-c)向...

07 - Metrics - 观察系统的健康指标 (1/6) - Metrics 与 Metricbeat 的基本介绍

Metrics - 观察系统的健康指标 系列文章 (1/6) - Metrics 与 Metricb...