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

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 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年前 评论

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