代码拉取完成,页面将自动刷新
Reborn 是使用 Go 开发的,基于 Redis 存储的配置库,简单配置,易于使用。
go get github.com/jwma/reborn
package main
import (
"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 实例外,还可以有如下用法。
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) // 默认间隔: 5s
r.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 实例的配置进行覆盖。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型