Commit dc80cfbc24f88ccb370c77395261fba7f38c14b8

Authored by 王家文
1 parent 4611a69d
Exists in master and in 1 other branch dev-wjw

feat✨:redis封装方法优化

configs/confbase/external.go
@@ -10,13 +10,13 @@ import ( @@ -10,13 +10,13 @@ import (
10 10
11 func SaveCache[T IConfData](gameId string, obj T) { 11 func SaveCache[T IConfData](gameId string, obj T) {
12 info := obj.ConfInfo(gameId) 12 info := obj.ConfInfo(gameId)
13 - _ = zredis.SetEx(zredis.GetConn(), info.CacheKey, zjson.Str(obj), info.CacheTime) 13 + _ = zredis.SetEx(info.CacheKey, zjson.Str(obj), info.CacheTime)
14 } 14 }
15 15
16 func LoadCache[T IConfData](gameId string, obj T) (has bool) { 16 func LoadCache[T IConfData](gameId string, obj T) (has bool) {
17 has = true 17 has = true
18 info := obj.ConfInfo(gameId) 18 info := obj.ConfInfo(gameId)
19 - text, err := zredis.Get(zredis.GetConn(), info.CacheKey) 19 + text, err := zredis.Get(info.CacheKey)
20 if err != nil { 20 if err != nil {
21 has = false 21 has = false
22 return 22 return
@@ -77,7 +77,7 @@ func GetCurrent[T1 IConfData, T2 IConfRawData](gameId string, obj T1) bool { @@ -77,7 +77,7 @@ func GetCurrent[T1 IConfData, T2 IConfRawData](gameId string, obj T1) bool {
77 has := false 77 has := false
78 info := obj.ConfInfo(gameId) 78 info := obj.ConfInfo(gameId)
79 currentKey := info.CacheCurrent 79 currentKey := info.CacheCurrent
80 - currentId := zredis.GetString(zredis.GetConn(), currentKey) 80 + currentId := zredis.GetString(currentKey)
81 confRaw := new(T2) 81 confRaw := new(T2)
82 hasFind := false 82 hasFind := false
83 if currentId == "" { 83 if currentId == "" {
@@ -97,7 +97,7 @@ func GetCurrent[T1 IConfData, T2 IConfRawData](gameId string, obj T1) bool { @@ -97,7 +97,7 @@ func GetCurrent[T1 IConfData, T2 IConfRawData](gameId string, obj T1) bool {
97 SaveCache(gameId, obj) 97 SaveCache(gameId, obj)
98 has = true 98 has = true
99 currentId = obj.GetUid() 99 currentId = obj.GetUid()
100 - _ = zredis.Set(zredis.GetConn(), currentKey, currentId) 100 + _ = zredis.Set(currentKey, currentId)
101 } 101 }
102 return has 102 return has
103 } 103 }
service-common/svredis/index.go
@@ -56,13 +56,13 @@ func Init() bool { @@ -56,13 +56,13 @@ func Init() bool {
56 56
57 func SaveData(gameId string, obj IRedisData) { 57 func SaveData(gameId string, obj IRedisData) {
58 info := obj.RedisInfo(gameId) 58 info := obj.RedisInfo(gameId)
59 - _ = zredis.SetEx(zredis.GetConn(), info.CacheKey, zjson.Str(obj), info.CacheTime) 59 + _ = zredis.SetEx(info.CacheKey, zjson.Str(obj), info.CacheTime)
60 } 60 }
61 61
62 func LoadData[T IRedisData](gameId string, obj T) (has bool) { 62 func LoadData[T IRedisData](gameId string, obj T) (has bool) {
63 has = true 63 has = true
64 info := obj.RedisInfo(gameId) 64 info := obj.RedisInfo(gameId)
65 - text, err := zredis.Get(zredis.GetConn(), info.CacheKey) 65 + text, err := zredis.Get(info.CacheKey)
66 if err != nil { 66 if err != nil {
67 has = false 67 has = false
68 return 68 return
util/zredis/external.go 0 → 100644
@@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
  1 +package zredis
  2 +
  3 +import (
  4 + "errors"
  5 + "fmt"
  6 + "github.com/gomodule/redigo/redis"
  7 + "time"
  8 +)
  9 +
  10 +// Init 初始化
  11 +func Init(addr, pass string, db int) {
  12 +
  13 + _addr, _pass, _db = addr, pass, db
  14 +
  15 + pool = &redis.Pool{
  16 + MaxActive: 10240,
  17 + MaxIdle: 10240, // Maximum number of idle connections in the pool.
  18 + IdleTimeout: 240 * time.Second, // Close connections after remaining idle for this duration
  19 + Dial: dial,
  20 + Wait: true,
  21 + }
  22 +}
  23 +
  24 +// GetConn 获取链接
  25 +func GetConn() (conn redis.Conn, err error) {
  26 + if pool == nil {
  27 + err = errors.New("zredis pool nil")
  28 + fmt.Println("err", err)
  29 + return nil, err
  30 + }
  31 + conn = pool.Get()
  32 + if conn == nil {
  33 + err = errors.New("zredis conn nil")
  34 + fmt.Println("err", err)
  35 + return nil, err
  36 + }
  37 + return conn, nil
  38 +}
  39 +
  40 +// Check 检查
  41 +func Check() bool {
  42 +
  43 + conn, err := GetConn()
  44 + if err != nil {
  45 + return false
  46 + }
  47 + defer autoClose(conn)
  48 +
  49 + _, err = redis.Int64(conn.Do("GET", "test"))
  50 + if err != nil {
  51 + if err == redis.ErrNil {
  52 + //fmt.Println("redis.ErrNil")
  53 + } else {
  54 + fmt.Println("err", err)
  55 + fmt.Println("redis conn error",
  56 + "_addr", _addr,
  57 + "_pass", _pass,
  58 + "_db", _db)
  59 + return false
  60 + }
  61 + }
  62 +
  63 + return true
  64 +}
util/zredis/handler.go
@@ -1,30 +0,0 @@ @@ -1,30 +0,0 @@
1 -package zredis  
2 -  
3 -import (  
4 - "fmt"  
5 - "github.com/gomodule/redigo/redis"  
6 -)  
7 -  
8 -func Check() bool {  
9 - if pool == nil {  
10 - fmt.Println("redis pool nil")  
11 - }  
12 - conn := pool.Get()  
13 - defer AutoClose(conn)  
14 -  
15 - _, err := redis.Int64(conn.Do("GET", "test"))  
16 - if err != nil {  
17 - if err == redis.ErrNil {  
18 - //fmt.Println("redis.ErrNil")  
19 - } else {  
20 - fmt.Println("err", err)  
21 - fmt.Println("redis conn error",  
22 - "_addr", _addr,  
23 - "_pass", _pass,  
24 - "_db", _db)  
25 - return false  
26 - }  
27 - }  
28 -  
29 - return true  
30 -}  
util/zredis/hash.go
@@ -5,13 +5,25 @@ import ( @@ -5,13 +5,25 @@ import (
5 ) 5 )
6 6
7 // HSet HSet 7 // HSet HSet
8 -func HSet(conn redis.Conn, tableName, key, value any) error {  
9 - _, err := conn.Do("HSET", tableName, key, value) 8 +func HSet(tableName, key, value any) error {
  9 + conn, err := GetConn()
  10 + if err != nil {
  11 + return err
  12 + }
  13 + defer autoClose(conn)
  14 +
  15 + _, err = conn.Do("HSET", tableName, key, value)
10 return err 16 return err
11 } 17 }
12 18
13 // HGet HGet 19 // HGet HGet
14 -func HGet(conn redis.Conn, tableName, key any) any { 20 +func HGet(tableName, key any) any {
  21 + conn, err := GetConn()
  22 + if err != nil {
  23 + return nil
  24 + }
  25 + defer autoClose(conn)
  26 +
15 reply, err := conn.Do("HGET", tableName, key) 27 reply, err := conn.Do("HGET", tableName, key)
16 if err != nil { 28 if err != nil {
17 return nil 29 return nil
@@ -20,7 +32,13 @@ func HGet(conn redis.Conn, tableName, key any) any { @@ -20,7 +32,13 @@ func HGet(conn redis.Conn, tableName, key any) any {
20 } 32 }
21 33
22 // HGetInt64 HGetInt64 34 // HGetInt64 HGetInt64
23 -func HGetInt64(conn redis.Conn, tableName, key any) int64 { 35 +func HGetInt64(tableName, key any) int64 {
  36 + conn, err := GetConn()
  37 + if err != nil {
  38 + return 0
  39 + }
  40 + defer autoClose(conn)
  41 +
24 reply, err := redis.Int64(conn.Do("HGET", tableName, key)) 42 reply, err := redis.Int64(conn.Do("HGET", tableName, key))
25 if err == nil { 43 if err == nil {
26 return reply 44 return reply
util/zredis/hash_data.go
@@ -6,13 +6,25 @@ import ( @@ -6,13 +6,25 @@ import (
6 ) 6 )
7 7
8 // HSetData HSetData 8 // HSetData HSetData
9 -func HSetData(conn redis.Conn, value IData) error {  
10 - _, err := conn.Do("HSET", value.TableName(), value.DbKey(), value.ToString()) 9 +func HSetData(value IData) error {
  10 + conn, err := GetConn()
  11 + if err != nil {
  12 + return err
  13 + }
  14 + defer autoClose(conn)
  15 +
  16 + _, err = conn.Do("HSET", value.TableName(), value.DbKey(), value.ToString())
11 return err 17 return err
12 } 18 }
13 19
14 // HGetData HSetData 20 // HGetData HSetData
15 -func HGetData(conn redis.Conn, value IData) IData { 21 +func HGetData(value IData) IData {
  22 + conn, err := GetConn()
  23 + if err != nil {
  24 + return nil
  25 + }
  26 + defer autoClose(conn)
  27 +
16 text, err := redis.String(conn.Do("HGET", value.TableName(), value.DbKey())) 28 text, err := redis.String(conn.Do("HGET", value.TableName(), value.DbKey()))
17 if err == nil { 29 if err == nil {
18 errJson := zjson.Obj(text, value) 30 errJson := zjson.Obj(text, value)
util/zredis/internal.go 0 → 100644
@@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
  1 +package zredis
  2 +
  3 +import (
  4 + "github.com/gomodule/redigo/redis"
  5 + "time"
  6 +)
  7 +
  8 +var (
  9 + _addr string
  10 + _pass string
  11 + _db int
  12 +)
  13 +var pool *redis.Pool
  14 +
  15 +// autoClose 自动关闭
  16 +func autoClose(conn redis.Conn) {
  17 + err := conn.Close()
  18 + if err != nil {
  19 + }
  20 +}
  21 +
  22 +func dial() (redis.Conn, error) {
  23 + conn, err := redis.Dial("tcp", _addr,
  24 + redis.DialPassword(_pass),
  25 + redis.DialDatabase(_db),
  26 + redis.DialConnectTimeout(5*time.Second),
  27 + redis.DialReadTimeout(5*time.Second),
  28 + redis.DialWriteTimeout(5*time.Second),
  29 + )
  30 + return conn, err
  31 +}
util/zredis/kv.go
@@ -5,11 +5,11 @@ import ( @@ -5,11 +5,11 @@ import (
5 ) 5 )
6 6
7 func Increment(key string) int64 { 7 func Increment(key string) int64 {
8 - conn := GetConn()  
9 - if conn == nil { 8 + conn, err := GetConn()
  9 + if err != nil {
10 return 0 10 return 0
11 } 11 }
12 - defer conn.Close() 12 + defer autoClose(conn)
13 13
14 value, err := redis.Int64(conn.Do("INCR", key)) 14 value, err := redis.Int64(conn.Do("INCR", key))
15 if err == nil { 15 if err == nil {
@@ -18,22 +18,46 @@ func Increment(key string) int64 { @@ -18,22 +18,46 @@ func Increment(key string) int64 {
18 return 0 18 return 0
19 } 19 }
20 20
21 -func Set(conn redis.Conn, key, value any) (err error) { 21 +func Set(key, value any) (err error) {
  22 + conn, errConn := GetConn()
  23 + if errConn != nil {
  24 + return errConn
  25 + }
  26 + defer autoClose(conn)
  27 +
22 _, err = conn.Do("Set", key, value) 28 _, err = conn.Do("Set", key, value)
23 return 29 return
24 } 30 }
25 31
26 -func Get(conn redis.Conn, key string) (value string, err error) { 32 +func Get(key string) (value string, err error) {
  33 + conn, errConn := GetConn()
  34 + if errConn != nil {
  35 + return "", errConn
  36 + }
  37 + defer autoClose(conn)
  38 +
27 value, err = redis.String(conn.Do("Get", key)) 39 value, err = redis.String(conn.Do("Get", key))
28 return 40 return
29 } 41 }
30 42
31 -func SetEx(conn redis.Conn, key, value string, exTime int) (err error) { 43 +func SetEx(key, value string, exTime int) (err error) {
  44 + conn, errConn := GetConn()
  45 + if errConn != nil {
  46 + return errConn
  47 + }
  48 + defer autoClose(conn)
  49 +
32 _, err = conn.Do("Set", key, value, "EX", exTime) 50 _, err = conn.Do("Set", key, value, "EX", exTime)
33 return 51 return
34 } 52 }
35 53
36 -func GetString(conn redis.Conn, key string) string { 54 +func GetString(key string) string {
  55 + conn, errConn := GetConn()
  56 + if errConn != nil {
  57 + return ""
  58 + }
  59 + defer autoClose(conn)
  60 +
37 value, err := redis.String(conn.Do("Get", key)) 61 value, err := redis.String(conn.Do("Get", key))
38 if err == nil { 62 if err == nil {
39 return value 63 return value
@@ -41,7 +65,13 @@ func GetString(conn redis.Conn, key string) string { @@ -41,7 +65,13 @@ func GetString(conn redis.Conn, key string) string {
41 return "" 65 return ""
42 } 66 }
43 67
44 -func GetInt64(conn redis.Conn, key string) int64 { 68 +func GetInt64(key string) int64 {
  69 + conn, errConn := GetConn()
  70 + if errConn != nil {
  71 + return 0
  72 + }
  73 + defer autoClose(conn)
  74 +
45 value, err := redis.Int64(conn.Do("Get", key)) 75 value, err := redis.Int64(conn.Do("Get", key))
46 if err == nil { 76 if err == nil {
47 return value 77 return value
util/zredis/redis.go
@@ -1,50 +0,0 @@ @@ -1,50 +0,0 @@
1 -package zredis  
2 -  
3 -import (  
4 - "github.com/gomodule/redigo/redis"  
5 - "time"  
6 -)  
7 -  
8 -var (  
9 - _addr string  
10 - _pass string  
11 - _db int  
12 -)  
13 -var pool *redis.Pool  
14 -  
15 -func Init(addr, pass string, db int) {  
16 -  
17 - _addr, _pass, _db = addr, pass, db  
18 -  
19 - pool = &redis.Pool{  
20 - MaxActive: 10240,  
21 - MaxIdle: 10240, // Maximum number of idle connections in the pool.  
22 - IdleTimeout: 240 * time.Second, // Close connections after remaining idle for this duration  
23 - Dial: dial,  
24 - Wait: true,  
25 - }  
26 -}  
27 -  
28 -func dial() (redis.Conn, error) {  
29 - conn, err := redis.Dial("tcp", _addr,  
30 - redis.DialPassword(_pass),  
31 - redis.DialDatabase(_db),  
32 - redis.DialConnectTimeout(5*time.Second),  
33 - redis.DialReadTimeout(5*time.Second),  
34 - redis.DialWriteTimeout(5*time.Second),  
35 - )  
36 - return conn, err  
37 -}  
38 -  
39 -func GetConn() redis.Conn {  
40 - if pool == nil {  
41 - return nil  
42 - }  
43 - return pool.Get()  
44 -}  
45 -  
46 -func AutoClose(conn redis.Conn) {  
47 - err := conn.Close()  
48 - if err != nil {  
49 - }  
50 -}