Laravel Eloquent 透明缓存
各位同学,
安个家技术团队开源了一套 Eloquent 模型的 Redis 缓存项目Pea。我们已经在生产环境大量使用,欢迎大家测试评估,更欢迎提交issue和pull request。
特色
- 行级缓存
- 表级缓存
- 自动过期
更多细节参考wiki。
安装
composer require angejia/pea:dev-master
使用
在config/app.php
中添加Angejia\Pea\ServiceProvider
,然后使用Angejia\Pea\Model
替换Illuminate\Database\Eloquent\Model
。 最后在模型中设置protected
属性$needCache
为true
即可开启缓存支持。
class UserModel extends \Angejia\Pea\Model
{
protected $needCache = true;
}
本帖已被设为精华帖!
说明,我是在 L 5.3.2* 版本使用的,不知道 L5.1,L5.2 是不是会有同样的问题 。
@lvht 我使用了一下,看了一下源码,有一个问题
Angejia\Pea\QueryBuilder 继承 Illuminate\Database\Query\Builder ,覆盖了
`get()
`方法不同类型的返回结果,对后续的处理是有问题的。
Illuminate\Database\Eloquent\Builder:: getModels() 就有使用
get()
的结果所以在命中的时候,就会报错
@dryyun 这个还真是个问题。能在GitHub上提个issue吗?
@lvht issue 已经提交。https://github.com/angejia/pea/issues/16
看着不错,很适用我目前的项目
在5.4的版本上貌似问题还是比较多...作者貌似不维护了 :(
@落伽 这个开发的时候貌似是只适用于5.1,我记得好像说只适配LTS版本
@lvht 5.5会继续支持吗?
有些修改不能立刻生效,还是读取的缓存
一直在等支持lv5.5,结果才发现在安个家已经倒闭...
作者貌似也不在维护.所以发现了这个替代https://github.com/GeneaLabs/laravel-model-caching,该项目优于pea的是提供了artisan命令,用于当在框架外部操作了数据源时清除缓存.还有在查询时可以显示的禁止此条查询缓存记录.