coai/connection/worker.go

41 lines
624 B
Go

package connection
import (
"database/sql"
"github.com/go-redis/redis/v8"
"time"
)
var tick time.Duration = 5 * time.Second // tick every 5 second
func MysqlWorker(db *sql.DB) {
go func() {
for {
if db == nil || db.Ping() != nil {
db = ConnectDatabase()
}
time.Sleep(tick)
}
}()
}
func pingRedis(client *redis.Client) error {
if _, err := client.Ping(client.Context()).Result(); err != nil {
return err
}
return nil
}
func RedisWorker(cache *redis.Client) {
go func() {
for {
if cache == nil || pingRedis(cache) != nil {
cache = ConnectRedis()
}
time.Sleep(tick)
}
}()
}