Score
0
Watch 3 Star 10 Fork 2

安木鸡 / rebornGoMIT

Join us
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
Go 开发的,基于 Redis 存储的配置库,简单配置,易于使用。 spread retract

Clone or download
Loading...
README.md


Reborn

A redis-based configuration library developed using Go, ready to go, easy to use.

ci license


中文 | English


Install

go get github.com/jwma/reborn

Quick Start

package main

import (
	"fmt"
	"github.com/go-redis/redis"
	"github.com/jwma/reborn"
	"log"
)

func main() {
	// get your redis client here
	client := redis.NewClient(&redis.Options{
		Addr:        "127.0.0.1:6379",
		Password:    "",
		DB:          0,
		IdleTimeout: -1,
	})

	var err error

	// new empty config
	defaults := reborn.NewConfig()

	// set default config
	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)
	}

	// create a Reborn instance using defaults config
	// this instance will store all the configs into YOUR_CONFIG_KEY Hash in Redis
	r, err := reborn.NewWithDefaults(client, "YOUR_CONFIG_KEY", defaults)

	// by passing the second parameter, 
	// you can get this default value when the key does not exists
	websiteTitle := r.GetValue("websiteTitle", "default value")
	fmt.Println(websiteTitle)                      // Output: Reborn
	fmt.Println(r.GetValue("noExistsKey", "oops")) // Output: oops

	toggle := r.GetBoolValue("toggle", false)
	fmt.Println(toggle)
}

More usage

You can use Reborn like below.

Create a Reborn instance without default configs

r, _ := reborn.New(client, "YOUR_CONFIG_KEY")

Save multiple Key-Value at one time

r, _ := reborn.New(client, "YOUR_CONFIG_KEY")

// SetValue() only update the Reborn instance configs
r.SetValue("discount", 8.8)
r.SetValue("websiteTitle", "Promotion")

// after SetValue(), you can call Persist() save you Key-Value into Redis.
r.Persist()

Start auto reload

After start auto reload function, Reborn will periodically use the database configs to override the config items of the Reborn instance. However, when the data of the Reborn instance changes, the auto reload function will skip the override operation and enter the next round of waiting until you call Persist (), the auto reload will continue the work of reload config items.

r, _ := reborn.New(client, "YOUR_CONFIG_KEY")
r.SetAutoReloadDuration(time.Second * 10)  // default duration: 5s
r.StartAutoReload()

// stop auto reload
r.StopAutoReload()

Supported types

The types you can pass when you call SetValue():

  • int
  • float64
  • string
  • bool
  • []int
  • []string
  • map[string]int
  • map[string]string

⚠️ You will get the UnsupportedValueTypeError when you pass unsupported types.

Call the below functions to get different types value:

  • GetValue() return string
  • GetIntValue() return int
  • GetFloat64Value() return float64
  • GetBoolValue() return bool
  • GetIntSliceValue() return []int
  • GetStringSliceValue() return []string
  • GetStringIntMapValue() return map[string]int
  • GetStringStringMapValue() return map[string]string

How to support the other types?

You can parse the variable to string, then you can call SetValue(). When you want to get this config item, you can call GetValue() to get string types variable, then you parse it back.

Not cool, but it works~

Notice

⚠️ DON'T FORGET CALL THE Persist()

After SetValue(), don't forget call Persist(), if not:

  1. Config items will not save into Redis.
  2. Auto reload function will not override the config items.

Comments ( 0 )

Sign in for post a comment

Go
1
https://gitee.com/jwma/reborn.git
git@gitee.com:jwma/reborn.git
jwma
reborn
reborn
master

Help Search