Commit 1f06749b authored by JiebinHu's avatar JiebinHu

redis cluster

parent b4f77b8a
......@@ -26,8 +26,10 @@ type MysqlCodeConfig struct {
//redis配置
type RedisConfig struct {
REDIS_HOST string
REDIS_PASSWORD string
REDIS_HOST string
REDIS_PASSWORD string
REDIS_CLUSTER_HOST string
REDIS_CLUSTER_PASSWORD string
}
//jwt
......
......@@ -23,7 +23,7 @@ func init() {
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
sqlLogger := logger.Default.LogMode(logger.Info)
sqlLogger := logger.Default.LogMode(logger.Error) // 这个服务不需要
if file := mylogrus.GetSqlLog(); file != nil {
//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{
......
......@@ -8,52 +8,27 @@ import (
"log"
)
var RedisClient *redis.Client
var RedisClient1 *redis.Client
var RedisCluster *redis.Client
func init() {
RedisClient = redis.NewClient(&redis.Options{
Addr: config.GetConfigRedis().REDIS_HOST,
Password: config.GetConfigRedis().REDIS_PASSWORD, // no password set
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
RedisCluster = redis.NewClient(&redis.Options{
Addr: config.GetConfigRedis().REDIS_CLUSTER_HOST,
Password: config.GetConfigRedis().REDIS_CLUSTER_PASSWORD, // no password set
DB: 0, // use default DB
PoolSize: 200,
MinIdleConns: 20,
})
mylogrus.MyLog.Infoln(config.GetConfigRedis().REDIS_HOST)
mylogrus.MyLog.Infoln(config.GetConfigRedis().REDIS_PASSWORD)
pong, err = RedisClient1.Ping(context.Background()).Result()
pong, err := RedisCluster.Ping(context.Background()).Result()
if err != nil {
mylogrus.MyLog.Warn(err)
mylogrus.MyLog.Fatal("redis db1 connect fail")
mylogrus.MyLog.Fatal("redis db0 connect fail")
} else {
log.Println("redis db1 connection success - " + pong)
log.Println("redis db0 connection success - " + pong)
}
// log hook
//RedisClient.AddHook(redisHook{})
}
func GetRedis() *redis.Client {
return RedisClient
}
func GetRedis1() *redis.Client {
return RedisClient1
func GetRedisCluster() *redis.Client {
return RedisCluster
}
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
[REDIS]
REDIS_HOST=47.244.34.27:6379
REDIS_PASSWORD=8QZ9JD1zLvPR3yHf
REDIS_CLUSTER_HOST=47.244.34.27:6379
REDIS_CLUSTER_PASSWORD=8QZ9JD1zLvPR3yHf
[JWT]
SECRET=hilo1632
ISSUER_API=hiloApi
......
......@@ -11,6 +11,8 @@ MYSQL_DB=hilo_code
[REDIS]
REDIS_HOST=47.244.34.27:6379
REDIS_PASSWORD=8QZ9JD1zLvPR3yHf
REDIS_CLUSTER_HOST=47.244.34.27:6379
REDIS_CLUSTER_PASSWORD=8QZ9JD1zLvPR3yHf
[JWT]
SECRET=hilo1632
ISSUER_API=hiloApi
......
......@@ -112,7 +112,7 @@ func check() {
for {
select {
case <-tick.C:
l, err := redisCli.GetRedis().LLen(context.Background(), SocketQueueSendGift).Result()
l, err := redisCli.GetRedisCluster().LLen(context.Background(), SocketQueueSendGift).Result()
if err != nil {
mylogrus.MyLog.Infof("cron sendGiftChan msg error,left %v-%v", l, err)
}
......@@ -122,7 +122,7 @@ func check() {
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)
}
if l > 0 {
......@@ -136,7 +136,7 @@ func deal() {
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 != redis.Nil {
mylogrus.MyLog.Errorf("cron sendGiftChan redisCli.GetRedis().BLPop err:+%v", err)
......@@ -144,7 +144,7 @@ func deal() {
}
if len(strs) >= 2 {
content := strs[1]
mylogrus.MyLog.Infof("cron sendGiftChan content:%v", content)
//mylogrus.MyLog.Infof("cron sendGiftChan content:%v", content)
msg := new(SendGiftMsg)
if err := json.Unmarshal([]byte(content), msg); err != nil {
mylogrus.MyLog.Errorf("cron sendGiftChan Unmarshal err:%+v, content:%v", err, content)
......@@ -179,7 +179,7 @@ func SendToUserCenter(sendUserId uint64, msg *userProxy.GlobalGiftBanner) {
if err != nil {
mylogrus.MyLog.Errorf("grpc GlobalGiftBanner send fail")
} else {
mylogrus.MyLog.Info("grpc GlobalGiftBanner send success")
//mylogrus.MyLog.Info("grpc GlobalGiftBanner send success")
}
} else {
}
......@@ -197,7 +197,7 @@ func broadcast(msgType uint32, data []byte) ([]uint64, error) {
mylogrus.MyLog.Errorf("broadcast message failed %s", err.Error())
}
if rsp != nil {
mylogrus.MyLog.Infof("broadcast message res:%v", rsp)
//mylogrus.MyLog.Infof("broadcast message res:%v", rsp)
return rsp.FailedUids, err
} else {
return []uint64{}, err
......
......@@ -11,6 +11,8 @@ MYSQL_DB=hilo_code
[REDIS]
REDIS_HOST=r-eb3btxn8vfdsuwdbuf.redis.dubai.rds.aliyuncs.com:6379
REDIS_PASSWORD=
REDIS_CLUSTER_HOST=r-eb3yt6k8zgxs62kjjs.redis.dubai.rds.aliyuncs.com:6379
REDIS_CLUSTER_PASSWORD=
[JWT]
SECRET=hilo1504
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