Golang连接redis哨兵模式
package main
import (
"context"
"fmt"
"github.com/go-redis/redis/v8"
"log"
)
type userCredentialLoginCount struct {
ID string // 用户id也可能是用户名
account_pwd_count int // 账号或密码错误次数
token_count int // 令牌错误次数
}
func main() {
fmt.Println("hello world")
//建立连接
sf := &redis.FailoverOptions{
// The master name.
MasterName: "mymaster",
// A seed list of host:port addresses of sentinel nodes.
SentinelAddrs: []string{"192.168.55.219:26379", "192.168.55.227:26379", "192.168.55.230:26379"},
// Following options are copied from Options struct.
Password: "redis@123.com",
DB: 2,
}
//ctx, _ := context.WithTimeout(context.Background(), time.Millisecond*100)
//user_credential_login_count := &userCredentialLoginCount{
// ID: "hast_users",
// AcountPwdCount: 1,
// TokenCount: 2,
//}
datas := map[string]interface{}{
//"id": "hast_users",
"tel": 1,
"age": 2,
}
rdb := redis.NewFailoverClient(sf)
ctx := context.Background()
fmt.Println("client:", rdb)
err1 := rdb.Ping(ctx).Err()
if err1 != nil {
fmt.Println("Ping:", err1)
}
// 删除某个key 以及对应的值
// rdb.Del(ctx,"hast_users")
bExist, err := rdb.HExists(ctx, "hash_tests", "tel").Result()
log.Println(bExist, err)
bRet, err := rdb.HSet(ctx, "hash_tests", "tel", 3).Result()
log.Println(bRet, err)
rdb.HSet(ctx, "hash_tests", "token_count", 2).Result()
rdb.HSet(ctx, "hash_tests", "account_pwd_count", 3).Result()
//bExist, err = rdb.HExists(ctx, "hash_tests", "tel").Result()
//log.Println(bExist, err)
//resq := rdb.HGet(ctx, "hash_tests", "tel")
//log.Println(resq.Int())
hmgetall := rdb.HGetAll(ctx, "hash_tests")
if hmgetall.Err() != nil {
log.Printf("###### HMGet hmgetall err", hmgetall.Err())
}
log.Printf("###### HMGet hmgetall Val", hmgetall.Val())
log.Printf("###### HMSet #################")
rst := rdb.HMSet(ctx, "hast_users", datas)
log.Printf("###### HMSet rst err", rst.Err())
log.Printf("###### HMSet rst Val", rst.Val())
// 如果要对key设置过期时间
conn.Expire(ctx, "hast_users", 10*time.Minute)
log.Printf("###### HMGet #################")
log.Printf("###### HMGet tel#################")
hmget := rdb.HMGet(ctx, "hast_users", "tel")
if hmget.Err() != nil {
log.Printf("###### HMGet hmget err", hmget.Err())
}
log.Printf("###### HMGet hmget Val", hmget.Val())
log.Printf("###### HMGet token_count #################")
hmget = rdb.HMGet(ctx, "hast_users", "age")
if hmget.Err() != nil {
log.Printf("###### HMGet hmget err", hmget.Err())
}
log.Printf("###### HMGet hmget Val", hmget.Val())
bRet, err = rdb.HSet(ctx, "hast_users", "age", 3).Result()
log.Println(bRet, err)
log.Printf("###### HMGetALL #################")
hmgetall = rdb.HGetAll(ctx, "hast_users")
if hmgetall.Err() != nil {
log.Printf("###### HMGet hmgetall err", hmgetall.Err())
}
log.Printf("###### HMGet hmgetall Val", hmgetall.Val())
}