如何使用 golang 查询 Redis Db,如果它启动并运行以获取连接?



我的 redis db 有大量的键,所以当我启动我的代码时,如果我做信息持久性(在 redis CLI 上(,它会给我以下内容,加载:1 表示 redis 尚未准备好接受连接,而加载 :0表示 Redis 已启动并正在运行,并准备好接受连接。

loading:1
rdb_changes_since_last_save:1024
rdb_bgsave_in_progress:0
rdb_last_save_time:1530558451
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1 
rdb_last_cow_size:0
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:0

我与 redis 建立连接的代码如下:

var DefaultPool = NewPool("redis", 6379)
/*NewPool - create a new redis pool accessible at the given address */
func NewPool(host string, port int) *redis.Pool {
var address string
if os.Getenv("DOCKER") != "" {
address = fmt.Sprintf("%v:6379", host)
} else {
address = fmt.Sprintf("127.0.0.1:%v", port)
}
return &redis.Pool{
MaxIdle:   80,
MaxActive: 1000, // max number of connections
Dial: func() (redis.Conn, error) {
c, err := redis.Dial("tcp", address)
if err != nil {
panic(err.Error())
}
return c, err
},
}
}

我如何不断检查加载值是否为 0。

获取信息:

info, err := redis.String(c.Do("INFO", "persistence"))
if err != nil {
// handle error
}

检查加载字段:

re := regexp.MustCompile("^loading:0$") // this can be done once and stored as a package level variable.
if re.MatchString(info) {
// loading is zero!
}

最新更新