Golang 中可以像 Laravel 一样实时更新 Config 变量吗?
背景#
近期重构 PHP 项目为 Golang 时遇到这样一个问题,看看大佬们有没有遇到过,或更加优秀的办法。
我们需要给系统建立一个配置表,存储一些常用但不经常改动的配置(需要改动),如存:smtp 信息、是否开启审核、是否 xxx、等(运营人员可以改动)。
白话说:这个表类似于 CMS\WordPress 后台系统,能改某些配置文件。
旧项目实现#
旧项目 PHP 代码如下实现,在初始化时,将配置表数据直接写入 config 中,由于语言特性,config 可做到实时更新。(数据库更新)
新项目实现#
我们考虑了两种方案实现:
- 在 Golang 中我们使用的是 Gin 框架,考虑存在 Redis 中,每次获取的时候实时去读,但在获取多个配置时要多次去从 Redis 获取,浪费多次网络请求,且后台管理系统更新也不太方便;
- 由程序员去配置,写到配置文件中,每次更改都需要程序员去发版改动配置文件;
理想中的逻辑#
我们希望配置像 PHP 一样,修改数据库配置表后,能够写到一个全局函数或变量中(存在内存中),后台管理系统修改,业务逻辑可以全局函数或变量中在直接获取。
目前没有想到合适的方法实现,大家有类似的方法吗?
推荐文章: