Laravel Eloquent 透明缓存

各位同学,

安个家技术团队开源了一套 Eloquent 模型的 Redis 缓存项目Pea。我们已经在生产环境大量使用,欢迎大家测试评估,更欢迎提交issuepull request

特色

  • 行级缓存
  • 表级缓存
  • 自动过期

更多细节参考wiki

安装

composer require angejia/pea:dev-master

使用

config/app.php中添加Angejia\Pea\ServiceProvider,然后使用Angejia\Pea\Model替换Illuminate\Database\Eloquent\Model。 最后在模型中设置protected属性$needCachetrue即可开启缓存支持。

class UserModel extends \Angejia\Pea\Model
{
    protected $needCache = true;
}
本帖已被设为精华帖!
lvht
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 9

说明,我是在 L 5.3.2* 版本使用的,不知道 L5.1,L5.2 是不是会有同样的问题 。

@lvht 我使用了一下,看了一下源码,有一个问题
Angejia\Pea\QueryBuilder 继承 Illuminate\Database\Query\Builder ,覆盖了 `get() `方法

如果命中了缓存,返回的是数组对象 stdClass Object
如果没有命中,返回的是 Illuminate\Support\Collection Object

不同类型的返回结果,对后续的处理是有问题的。

Illuminate\Database\Eloquent\Builder:: getModels() 就有使用 get() 的结果

$results = $this->query->get($columns)->all();

所以在命中的时候,就会报错

Call to a member function all() on array

2年前 评论

@dryyun 这个还真是个问题。能在GitHub上提个issue吗?

2年前 评论

看着不错,很适用我目前的项目

1年前 评论

在5.4的版本上貌似问题还是比较多...作者貌似不维护了 :(

1年前 评论
ziyanziyu

@落伽 这个开发的时候貌似是只适用于5.1,我记得好像说只适配LTS版本

1年前 评论
ziyanziyu

@lvht 5.5会继续支持吗?

1年前 评论

有些修改不能立刻生效,还是读取的缓存

1年前 评论
ziyanziyu

一直在等支持lv5.5,结果才发现在安个家已经倒闭...
作者貌似也不在维护.所以发现了这个替代https://github.com/GeneaLabs/laravel-model-caching,该项目优于pea的是提供了artisan命令,用于当在框架外部操作了数据源时清除缓存.还有在查询时可以显示的禁止此条查询缓存记录.

1年前 评论
levi: 谢谢 1周前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

社区文档:

将托管在 packagist.org 和 github.com 的扩展包使用国内 CDN 加速
GitHub Laravel 扩展包 TOP 250
速查表方便快速查询框架功能,支持手机访问,支持中英文版本
Laravel 中文文档,由社区用户翻译和维护,将会保持一直更新
此文档的目的,就是为了提高技术团队的凝聚力、一致性和生产效率。
开发环境的部署,开发者工具的选择,适用于 Mac 和 Windows。
浓缩过后的精华
Laravel Nova 后台管理面板文档的中文翻译
Lumen 中文文档,由社区用户翻译和维护,将会保持一直更新
Laravel 下知名扩展包 Dingo API 的中文文档,Laravel API 开发必知必会