hi-server/pkg/tool/redis.go
2025-10-10 07:13:36 -07:00

46 lines
857 B
Go

package tool
import (
"context"
"fmt"
"net/url"
"github.com/redis/go-redis/v9"
)
func ParseRedisURI(uri string) (addr, password string, database int, err error) {
parsedURI, err := url.Parse(uri)
if err != nil {
return "", "", 0, err
}
host := parsedURI.Hostname()
port := parsedURI.Port()
if port == "" {
port = "6379"
}
addr = fmt.Sprintf("%s:%s", host, port)
// password
if parsedURI.User != nil {
password, _ = parsedURI.User.Password()
}
if len(parsedURI.Path) > 1 { // Path: "/0"
var dbIndex int
_, err = fmt.Sscanf(parsedURI.Path, "/%d", &dbIndex)
if err == nil {
database = dbIndex
}
}
return
}
func RedisPing(addr, password string, database int) error {
rds := redis.NewClient(&redis.Options{
Addr: addr,
Password: password,
DB: database,
})
return rds.Ping(context.Background()).Err()
}