开源软件名称:reborn
开源软件地址:https://gitee.com/jwma/reborn
开源软件介绍:
Reborn
Reborn 是使用 Go 开发的,基于 Redis 存储的配置库,简单配置,易于使用。
中文 | English
安装go get github.com/jwma/reborn 快速开始package mainimport ( "fmt" "github.com/go-redis/redis" "github.com/jwma/reborn" "log")func main() { // 获得一个 redis client client := redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", Password: "", DB: 0, IdleTimeout: -1, }) var err error // 获得一个空的配置,将会作为 Reborn 实例的默认配置 defaults := reborn.NewConfig() // 设置配置项 err = defaults.SetValue("websiteTitle", "Reborn") if err != nil { log.Printf("failed to set websiteTitle, error: %v\n", err) } err = defaults.SetValue("toggle", false) if err != nil { log.Printf("failed to set toggle, error: %v\n", err) } // 通过默认配置获得一个 Reborn 实例,该实例的配置会保存在 Redis 名为 YOUR_CONFIG_KEY 的 Hash 中 r, err := reborn.NewWithDefaults(client, "YOUR_CONFIG_KEY", defaults) // 通过 key 获取配置,第二个参数为获取的 key 不存的时候所使用的默认值 websiteTitle := r.GetValue("websiteTitle", "默认值") fmt.Println(websiteTitle) // 输出:Reborn fmt.Println(r.GetValue("noExistsKey", "oops")) // 输出:oops toggle := r.GetBoolValue("toggle", false) fmt.Println(toggle)} 更多用法除了可以使用默认配置项获得 Reborn 实例外,还可以有如下用法。 获得没有任何配置项的 Reborn 实例r, _ := reborn.New(client, "YOUR_CONFIG_KEY") 一次保存多个配置项r, _ := reborn.New(client, "YOUR_CONFIG_KEY")// SetValue 只会更新 Reborn 实例的配置项而不会影响数据库的配置项r.SetValue("discount", 8.8)r.SetValue("websiteTitle", "Promotion")// 通过调用 Persist 方法,对当前 Reborn 实例的配置进行保存到数据库的操作r.Persist() 开启自动重载配置开启自动重载后,Reborn 会定时使用数据库的配置去覆盖 Reborn 实例的配置项,但当 Reborn 实例的数据有变动的情况下,自动重载功能会跳过重载操作,进入下一轮等待,直到你调用 Persist() 之后,自动重载将会继续进行重载配置的工作。 r, _ := reborn.New(client, "YOUR_CONFIG_KEY")r.SetAutoReloadDuration(time.Second * 10) // 默认间隔: 5sr.StartAutoReload()// 停止自动重载配置r.StopAutoReload() 支持的数据类型你可以在使用 SetValue() 时,传递如下的数据类型: int float64 string bool []int []string map[string]int map[string]string
⚠️ 当你 SetValue() 传递了不支持的数据类型时,你会得到一个 UnsupportedValueTypeError 。 你可以通过如下的方法获取不同类型的配置项: GetValue() 获取 string GetIntValue() 获取 int GetFloat64Value() 获取 float64 GetBoolValue() 获取 bool GetIntSliceValue() 获取 []int GetStringSliceValue() 获取 []string GetStringIntMapValue() 获取 map[string]int GetStringStringMapValue() 获取 map[string]string
想要支持其他数据类型?如果你的配置项使用的数据类型不在支持列表中,你可以在 SetValue() 时,传入已经转换为 string 的值,在读取配置项时,可以使用 GetValue() 获取,最后再转换为原本的数据类型。 使用须知⚠️️ 记得调用 Persist() 。 当你调用 SetValue() 设置了配置项后,不要忘记调用 Persist() ,忘记调用的后果: - 你的配置当然不会被保存到数据库;
- 如果你开启了自动重载配置的话,忘记调用
Persist() 会影响配置的重载,因为 Reborn 认为你有改动未保存,所以不会使用数据库配置对Reborn 实例的配置进行覆盖。 |
请发表评论