Commit 1f06749b authored by JiebinHu's avatar JiebinHu

redis cluster

parent b4f77b8a
...@@ -26,8 +26,10 @@ type MysqlCodeConfig struct { ...@@ -26,8 +26,10 @@ type MysqlCodeConfig struct {
//redis配置 //redis配置
type RedisConfig struct { type RedisConfig struct {
REDIS_HOST string REDIS_HOST string
REDIS_PASSWORD string REDIS_PASSWORD string
REDIS_CLUSTER_HOST string
REDIS_CLUSTER_PASSWORD string
} }
//jwt //jwt
......
...@@ -23,7 +23,7 @@ func init() { ...@@ -23,7 +23,7 @@ func init() {
options := "?charset=utf8mb4&parseTime=True&loc=Local&time_zone=" + url.QueryEscape("'+8:00'") options := "?charset=utf8mb4&parseTime=True&loc=Local&time_zone=" + url.QueryEscape("'+8:00'")
dsn := "" + mysqlConfigData.MYSQL_USERNAME + ":" + mysqlConfigData.MYSQL_PASSWORD + "@(" + mysqlConfigData.MYSQL_HOST + ")/" + mysqlConfigData.MYSQL_DB + options dsn := "" + mysqlConfigData.MYSQL_USERNAME + ":" + mysqlConfigData.MYSQL_PASSWORD + "@(" + mysqlConfigData.MYSQL_HOST + ")/" + mysqlConfigData.MYSQL_DB + options
sqlLogger := logger.Default.LogMode(logger.Info) sqlLogger := logger.Default.LogMode(logger.Error) // 这个服务不需要
if file := mylogrus.GetSqlLog(); file != nil { if file := mylogrus.GetSqlLog(); file != nil {
//sqlLogger = logger.New(log.New(file, "\r\n", log.Ldate|log.Lmicroseconds), logger.Config{ //sqlLogger = logger.New(log.New(file, "\r\n", log.Ldate|log.Lmicroseconds), logger.Config{
sqlLogger = MyNew(log.New(file, "", log.Ldate|log.Lmicroseconds), logger.Config{ sqlLogger = MyNew(log.New(file, "", log.Ldate|log.Lmicroseconds), logger.Config{
......
...@@ -8,52 +8,27 @@ import ( ...@@ -8,52 +8,27 @@ import (
"log" "log"
) )
var RedisClient *redis.Client var RedisCluster *redis.Client
var RedisClient1 *redis.Client
func init() { func init() {
RedisClient = redis.NewClient(&redis.Options{ RedisCluster = redis.NewClient(&redis.Options{
Addr: config.GetConfigRedis().REDIS_HOST, Addr: config.GetConfigRedis().REDIS_CLUSTER_HOST,
Password: config.GetConfigRedis().REDIS_PASSWORD, // no password set Password: config.GetConfigRedis().REDIS_CLUSTER_PASSWORD, // no password set
DB: 0, // use default DB DB: 0, // use default DB
PoolSize: 2000,
MinIdleConns: 200,
})
mylogrus.MyLog.Infoln(config.GetConfigRedis().REDIS_HOST)
mylogrus.MyLog.Infoln(config.GetConfigRedis().REDIS_PASSWORD)
pong, err := RedisClient.Ping(context.Background()).Result()
if err != nil {
mylogrus.MyLog.Warn(err)
mylogrus.MyLog.Fatal("redis db0 connect fail")
} else {
mylogrus.MyLog.Info("redis db0 connection success - ", pong)
}
RedisClient1 = redis.NewClient(&redis.Options{
Addr: config.GetConfigRedis().REDIS_HOST,
Password: config.GetConfigRedis().REDIS_PASSWORD, // no password set
DB: 1, // use default DB
PoolSize: 200, PoolSize: 200,
MinIdleConns: 20, MinIdleConns: 20,
}) })
mylogrus.MyLog.Infoln(config.GetConfigRedis().REDIS_HOST) pong, err := RedisCluster.Ping(context.Background()).Result()
mylogrus.MyLog.Infoln(config.GetConfigRedis().REDIS_PASSWORD)
pong, err = RedisClient1.Ping(context.Background()).Result()
if err != nil { if err != nil {
mylogrus.MyLog.Warn(err) mylogrus.MyLog.Warn(err)
mylogrus.MyLog.Fatal("redis db1 connect fail") mylogrus.MyLog.Fatal("redis db0 connect fail")
} else { } else {
log.Println("redis db1 connection success - " + pong) log.Println("redis db0 connection success - " + pong)
} }
// log hook // log hook
//RedisClient.AddHook(redisHook{}) //RedisClient.AddHook(redisHook{})
} }
func GetRedis() *redis.Client { func GetRedisCluster() *redis.Client {
return RedisClient return RedisCluster
}
func GetRedis1() *redis.Client {
return RedisClient1
} }
package redisCli
import (
"context"
"hilo-socketCenter/common/mylogrus"
"strconv"
"time"
)
//这个用户避免多个服务器并发问题。
func SetNX(key string, value interface{}, expiration time.Duration, callBack func()) {
flag, err := RedisClient.SetNX(context.Background(), key, value, expiration).Result()
if err != nil {
mylogrus.MyLog.Errorf("key:%v lock start setNx err: %v", key, err)
}
if !flag {
mylogrus.MyLog.Infof("key:%v lock setNx has lock", key)
return
}
mylogrus.MyLog.Infof("key:%v lock setNx begin", key)
callBack()
//执行结束之后,移除key
//RedisClient.Del(context.Background(), key)
mylogrus.MyLog.Infof("key:%v lock setNx end", key)
}
//setNx没有,结束后,没有移除
/*func SetNxNoDel(key string, value interface{}, expiration time.Duration, callBack func()) {
flag, err := RedisClient.SetNX(context.Background(), key, value, expiration).Result()
if err != nil {
mylogrus.MyLog.Errorf("key:%v lock start setNx err: %v", key, err)
}
if !flag {
mylogrus.MyLog.Infof("key:%v lock setNx has lock", key)
return
}
mylogrus.MyLog.Infof("key:%v lock setNx begin", key)
callBack()
mylogrus.MyLog.Infof("key:%v lock setNx end", key)
}*/
func ClearExpired(key string, expireSec int64) error {
return GetRedis().ZRemRangeByScore(context.Background(), key,
"0", strconv.FormatInt(time.Now().Unix()-expireSec, 10)).Err()
}
func Lock(key string, expiration time.Duration) bool {
flag, err := RedisClient.SetNX(context.Background(), key, 1, expiration).Result()
if err != nil {
return false
}
if !flag {
return false
}
return true
}
...@@ -11,6 +11,8 @@ MYSQL_DB=hilo_code ...@@ -11,6 +11,8 @@ MYSQL_DB=hilo_code
[REDIS] [REDIS]
REDIS_HOST=47.244.34.27:6379 REDIS_HOST=47.244.34.27:6379
REDIS_PASSWORD=8QZ9JD1zLvPR3yHf REDIS_PASSWORD=8QZ9JD1zLvPR3yHf
REDIS_CLUSTER_HOST=47.244.34.27:6379
REDIS_CLUSTER_PASSWORD=8QZ9JD1zLvPR3yHf
[JWT] [JWT]
SECRET=hilo1632 SECRET=hilo1632
ISSUER_API=hiloApi ISSUER_API=hiloApi
......
...@@ -11,6 +11,8 @@ MYSQL_DB=hilo_code ...@@ -11,6 +11,8 @@ MYSQL_DB=hilo_code
[REDIS] [REDIS]
REDIS_HOST=47.244.34.27:6379 REDIS_HOST=47.244.34.27:6379
REDIS_PASSWORD=8QZ9JD1zLvPR3yHf REDIS_PASSWORD=8QZ9JD1zLvPR3yHf
REDIS_CLUSTER_HOST=47.244.34.27:6379
REDIS_CLUSTER_PASSWORD=8QZ9JD1zLvPR3yHf
[JWT] [JWT]
SECRET=hilo1632 SECRET=hilo1632
ISSUER_API=hiloApi ISSUER_API=hiloApi
......
...@@ -112,7 +112,7 @@ func check() { ...@@ -112,7 +112,7 @@ func check() {
for { for {
select { select {
case <-tick.C: case <-tick.C:
l, err := redisCli.GetRedis().LLen(context.Background(), SocketQueueSendGift).Result() l, err := redisCli.GetRedisCluster().LLen(context.Background(), SocketQueueSendGift).Result()
if err != nil { if err != nil {
mylogrus.MyLog.Infof("cron sendGiftChan msg error,left %v-%v", l, err) mylogrus.MyLog.Infof("cron sendGiftChan msg error,left %v-%v", l, err)
} }
...@@ -122,7 +122,7 @@ func check() { ...@@ -122,7 +122,7 @@ func check() {
mylogrus.MyLog.Errorf("dingding msg fail:%v", sErr) mylogrus.MyLog.Errorf("dingding msg fail:%v", sErr)
} }
}() }()
n, err := redisCli.GetRedis().Del(context.Background(), SocketQueueSendGift).Result() n, err := redisCli.GetRedisCluster().Del(context.Background(), SocketQueueSendGift).Result()
mylogrus.MyLog.Infof("del sendGiftChan msg queue:%v,n:%v,err:%v", SocketQueueSendGift, n, err) mylogrus.MyLog.Infof("del sendGiftChan msg queue:%v,n:%v,err:%v", SocketQueueSendGift, n, err)
} }
if l > 0 { if l > 0 {
...@@ -136,7 +136,7 @@ func deal() { ...@@ -136,7 +136,7 @@ func deal() {
for true { for true {
//不需要加锁,注意,阻塞。 //不需要加锁,注意,阻塞。
// 后进先出 // 后进先出
strs, err := redisCli.GetRedis().BRPop(context.Background(), time.Second, SocketQueueSendGift).Result() strs, err := redisCli.GetRedisCluster().BRPop(context.Background(), time.Second, SocketQueueSendGift).Result()
if err != nil { if err != nil {
if err != redis.Nil { if err != redis.Nil {
mylogrus.MyLog.Errorf("cron sendGiftChan redisCli.GetRedis().BLPop err:+%v", err) mylogrus.MyLog.Errorf("cron sendGiftChan redisCli.GetRedis().BLPop err:+%v", err)
...@@ -144,7 +144,7 @@ func deal() { ...@@ -144,7 +144,7 @@ func deal() {
} }
if len(strs) >= 2 { if len(strs) >= 2 {
content := strs[1] content := strs[1]
mylogrus.MyLog.Infof("cron sendGiftChan content:%v", content) //mylogrus.MyLog.Infof("cron sendGiftChan content:%v", content)
msg := new(SendGiftMsg) msg := new(SendGiftMsg)
if err := json.Unmarshal([]byte(content), msg); err != nil { if err := json.Unmarshal([]byte(content), msg); err != nil {
mylogrus.MyLog.Errorf("cron sendGiftChan Unmarshal err:%+v, content:%v", err, content) mylogrus.MyLog.Errorf("cron sendGiftChan Unmarshal err:%+v, content:%v", err, content)
...@@ -179,7 +179,7 @@ func SendToUserCenter(sendUserId uint64, msg *userProxy.GlobalGiftBanner) { ...@@ -179,7 +179,7 @@ func SendToUserCenter(sendUserId uint64, msg *userProxy.GlobalGiftBanner) {
if err != nil { if err != nil {
mylogrus.MyLog.Errorf("grpc GlobalGiftBanner send fail") mylogrus.MyLog.Errorf("grpc GlobalGiftBanner send fail")
} else { } else {
mylogrus.MyLog.Info("grpc GlobalGiftBanner send success") //mylogrus.MyLog.Info("grpc GlobalGiftBanner send success")
} }
} else { } else {
} }
...@@ -197,7 +197,7 @@ func broadcast(msgType uint32, data []byte) ([]uint64, error) { ...@@ -197,7 +197,7 @@ func broadcast(msgType uint32, data []byte) ([]uint64, error) {
mylogrus.MyLog.Errorf("broadcast message failed %s", err.Error()) mylogrus.MyLog.Errorf("broadcast message failed %s", err.Error())
} }
if rsp != nil { if rsp != nil {
mylogrus.MyLog.Infof("broadcast message res:%v", rsp) //mylogrus.MyLog.Infof("broadcast message res:%v", rsp)
return rsp.FailedUids, err return rsp.FailedUids, err
} else { } else {
return []uint64{}, err return []uint64{}, err
......
...@@ -11,6 +11,8 @@ MYSQL_DB=hilo_code ...@@ -11,6 +11,8 @@ MYSQL_DB=hilo_code
[REDIS] [REDIS]
REDIS_HOST=r-eb3btxn8vfdsuwdbuf.redis.dubai.rds.aliyuncs.com:6379 REDIS_HOST=r-eb3btxn8vfdsuwdbuf.redis.dubai.rds.aliyuncs.com:6379
REDIS_PASSWORD= REDIS_PASSWORD=
REDIS_CLUSTER_HOST=r-eb3yt6k8zgxs62kjjs.redis.dubai.rds.aliyuncs.com:6379
REDIS_CLUSTER_PASSWORD=
[JWT] [JWT]
SECRET=hilo1504 SECRET=hilo1504
ISSUER_API=hiloApi ISSUER_API=hiloApi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment