devinggo devinggo
首页
  • 系统介绍
  • 开发环境搭建
  • 快速开始
  • 生产部署
  • 目录结构
  • MVC开发
  • 权限控制
  • 拦截器
  • 定时任务
  • 消息队列
  • websocket服务器
  • 缓存
  • module开发
  • 代码自动生成
  • 命令
前端开发
常见问题
演示
GitHub (opens new window)
首页
  • 系统介绍
  • 开发环境搭建
  • 快速开始
  • 生产部署
  • 目录结构
  • MVC开发
  • 权限控制
  • 拦截器
  • 定时任务
  • 消息队列
  • websocket服务器
  • 缓存
  • module开发
  • 代码自动生成
  • 命令
前端开发
常见问题
演示
GitHub (opens new window)
  • 目录结构
  • MVC开发
  • 权限控制
  • 拦截器
  • 定时任务
  • 消息队列
  • websocket服务器
  • 缓存
    • module开发
    • 代码自动生成
    • 命令
    • 系统开发
    Kai
    2025-01-07
    目录

    缓存

    # 支持数据库全局查询

    1. 在每个数据应用logic中添加Model(ctx context.Context)方法,代码示例如下:
    //见文件 modules\system\logic\system\setting_config.go
    func (s *sSettingConfig) Model(ctx context.Context) *gdb.Model {
    	return dao.SettingConfig.Ctx(ctx).Hook(hook.Bind()).Cache(orm.SetCacheOption(ctx))
    }
    

    该方法返回一个gdb.Model对象,该对象添加cacheCache(orm.SetCacheOption(ctx))支持全局查询缓存,且Hook绑定了modules/system/pkg/hook/cache_evict.go钩子,一但数据表有插入,更新,删除操作可以批量清除相关数据表缓存。

    1. 使用Model(ctx context.Context)方法的查询,默认都支持缓存,且缓存时间默认24小时,可以修改orm.SetCacheOption(ctx context.Context, duration ...time.Duration)的参数,自定义缓存时间;例子如下:
    var settingConfigGroup *entity.SettingConfigGroup
    err = service.SettingConfigGroup().Model(ctx).Where(dao.SettingConfigGroup.Columns().Code, gkey).Scan(&settingConfigGroup)
    // 除了第一次,后续查询都支持缓存,且缓存时间默认24小时
    

    如果不需要缓存,可以直接调用dao.SettingConfig.Ctx(ctx)方法,例如:

    var settingConfigGroup *entity.SettingConfigGroup
    err = service.SettingConfigGroup().Ctx(ctx).Where(dao.SettingConfigGroup.Columns().Code, gkey).Scan(&settingConfigGroup)
    

    // 不支持缓存

    1. 改功能可以关闭,在config.yaml中配置设为false
    settings:
      enableGlobalDbCache: true # 是否开启全局数据库缓存,默认false
    

    # 支持带tag的缓存

    1. 相关方法见 modules\system\pkg\cache\utils.go
    上次更新: 2025/01/10, 11:26:33
    websocket服务器
    module开发

    ← websocket服务器 module开发→

    Theme by Vdoing | Copyright © 2025-2025 Kai
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式