如何做到数据库有更新则从数据库获取否则从缓存获取?

Laravel 缓存系统中如何默认从缓存获取 如果数据库有更新 则从数据库获取数据?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 8

应该是每次更新的同时更新缓存,读取是从缓存读取

5年前 评论

我是每次数据更新的时候 定义一个清除缓存的事件 解决的

5年前 评论

@荒之凡 那我觉得你按我说的做比较好

5年前 评论

@FMW 难保缓存崩了,还是得需要缓存获取不到的话到数据库去拿

5年前 评论

@18874127314 不排除有缓存服务器奔溃的问题,但是要实现提问者的功能,这个是很好的解决方案。

4年前 评论

实战教程2中有说,是使用Observer来实现,当数据更新的话

Cache::forget($link->cache_key);

当获取数据时,优先从cache中读取,如果没有则读取数据中的数据并且存入cache

public function getAllCached()
{
    // 尝试从缓存中取出 cache_key 对应的数据。如果能取到,便直接返回数据。
    // 否则运行匿名函数中的代码来取出 links 表中所有的数据,返回的同时做了缓存。
    return Cache::remember($this->cache_key, $this->cache_expire_in_seconds, function () {
        return $this->all();
    });
}
4年前 评论

可以通过 Eloquent ORM 的事件来更新缓存吧

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!