之前看到 xiuno 号称高承载,然后看了一下数据库是 MyISAM 引擎(这个就不提了),一直困扰我的 LIMIT 效率问题发现它的实现也只是简单的在 thread.class.php 中判断超过多少页之后倒序取数据。

后来发现它统一了 db 和 cache 的方法为 get/set,很喜欢这样的方式,这样在 Model 出口之前,对于 Action 来讲底层数据来源就变得透明了,可以直接配置文件开启缓存,而 Action 并不需要关心这些。

但是看到 Model 的抽象基类在调用 db 和 cache 的时候,貌似统一了方法名也没带来什么好处啊?

db

get/set/...

cache

get/set/...

model

get

# cache enable

db_cache_get

cache_get OR db_get&cache_set&cache_get

# cache disable

db_get

set

# cache enable

db_cache_set

cache_set&db_set

# cache disable

db_set

cache_get 和 db_get 中虽然都是获得相应的 instance 然后一致的 get,这个名字统一貌似也没带来什么好处嘛...

1、既然要统一,为啥不统一 implements 同一个 interface 或者 extends 同一个 abstract?即使不统一,db 一个 interface,cache 一个 interface,Model 中的 db_get 和 cache_get 还是照样各自实现各自啊,看到 db/cache/Model 一遍遍的 get/set 实在是... 而且 Model 中各种各样的 get/set 也感觉有点“野”。前辈们在实现的时候如果有过这样的场景,是怎么实现的呢?

2、是不是应该在 Model 中统一 db 和 cache 操作呢,这样对于 Action 来说不是更方便透明吗?一个配置文件就可以开关缓存,但是发现 CI 和 Yii 的 cache 操作例子中,很多 cache 操作直接穿透到了 Action 中。如果需要统一,那是在 db/cache 和 Model 之间加一层,还是直接在 Model 基类中实现合适呢?

php model db 赋值,PHP 框架 Model 层是否应该统一 DB 和 Cache相关推荐

  1. php对象不公用属性赋值,php 框架 Model 公用的问题

    想问下大家用 Laravel / Phalcon 是怎么实现 Model 层复用的. 参与过的很多项目都是 www / wap / api / admin / user 都有的, www 是 pc 端 ...

  2. Spring boot 三层框架dao层、service层、controller层+实体model层

    Spring boot 三层框架dao层.service层.controller层+实体model层 model层 dao层 service层 controller层 首先创建一个springboot ...

  3. java model类作用_SPRING框架中ModelAndView、Model、ModelMap区别及详细分析

    注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面. 首先介绍ModelMap[Model]和ModelAndView的作用 Model 是一个接口, 其实现类为Exte ...

  4. Spring MVC 控制层model.addAllAttribute()和model.addAllAttributes()方法的区别

    model.addAllAttributes(ladingInfoList); //model.addAllAttributes(map); model.addAttribute("tota ...

  5. 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例)

    前言 在上一篇0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架中,我已经介绍了这个轻型框架的层次结构,在下面的这篇文章中,我将以教师登陆功能为例,具体来扩充下我的core层的代 ...

  6. Django框架——模型层单表操作、模型层多表操作、模型层常用和非常用字段和参数、模型层进阶

    文章目录 1 模型层-单表操作 一 ORM简介 二 单表操作 2.1 创建表 1 创建模型 2 更多字段 3 更多参数 4 settings配置 5 增加,删除字段 2.2 添加表纪录 2.3 查询表 ...

  7. [单片机框架][drivers层][cw2015] fuelgauge 硬件电量计(二)

    接上一篇:[单片机框架][device层] fuelgauge 电量计 [单片机框架][drivers层][cw2015] fuelgauge 硬件电量计(一) 本章是硬件电量计的使用方法,采用IIC ...

  8. model.train()和model.eval()的用法及model.eval()可能导致测试准确率的下降

    问题导入: 一般我们在训练模型时会在前面加上:model.train() 在测试模型时会在前面使用:model.eval() 但是在某次使用网络测试模型时,训练准确率很高,但测试准确率很低,排查了各种 ...

  9. nodejs mysql 模型_nodejs+mysql中怎样的model才是好的model?

    这么巧我刚刚写了一段这个代码,而且写得我自己挺满意,share一下其中的逻辑:1.update的封装functionupdateRecord(model,obj,criteria,callback){ ...

最新文章

  1. python评语生成_如何评价生成模型框架 ZhuSuan?
  2. Leetcode-探索 | 存在重复
  3. 开放下载!《15分钟打造你自己的小程序》(内附详细代码)
  4. 很多人都不知道学了c/c++到底能做什么?让大牛来告诉你............
  5. execjs回调python_python使用execJS运行js函数例子
  6. go语言mysql删除记录_MySQL数据库删除操作-Go语言中文社区
  7. 学Python时需注意:单引号、双引号、三个单引号和三个双引号区别
  8. vue跳转下个页面关闭当前页面_如何机智判断页面是刷新还是关闭,背景:vue项目,需求:关闭页面,下次直接跳到登陆页...
  9. MySql免安装版安装配置,附MySQL服务无法启动解决方案
  10. AT24C02/04/08 地址理解
  11. 电子/自动化专业常用软件介绍
  12. JAVA实现 - 问题 G: 超大型 LED 显示屏
  13. Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (DSPACE.SYS_C007868)
  14. CLion - 卸载
  15. oracle中的存储过程是什么,oracle存储过程是什么?
  16. 一步步带你了解分布式数据库的架构演变之路!
  17. 行动力强大的人,都是“二进制”的
  18. 测试开发面试题目(三)——测试用例、安卓苹果系统区别、小程序与app的区别
  19. Figma 中文社区找到了!
  20. 超级P2P搜索引擎让所有收费网站破产!

热门文章

  1. javascript的一些常用正则表达式
  2. double类型问题
  3. 汇编中addr和offset
  4. Winsock网络编程快速入门
  5. 组播,单播,广播,多播,泛洪的概念
  6. pythonpil模块安装_centos 安装python PIL模块
  7. ppt上的倒计时小工具_办公小技巧:轻松玩转PPT秒针倒计时
  8. C++primer 第四版6.12:练习题
  9. java什么是子类_java什么是子类?
  10. 自己抽取的柱状图MpAndroidChart