优化redis模块

This commit is contained in:
boyce
2019-02-01 16:12:19 +08:00
parent 7f395e7b4c
commit 8d8c7ca77d

View File

@@ -58,7 +58,7 @@ func (slf *RedisModule) Init(redisCfg *ConfigRedis) {
}
// GetConn ...
func (slf *RedisModule) GetConn() (redis.Conn, error) {
func (slf *RedisModule) getConn() (redis.Conn, error) {
conn := slf.redispool.Get()
if conn == nil {
return nil, fmt.Errorf("not get connection")
@@ -73,17 +73,13 @@ func (slf *RedisModule) GetConn() (redis.Conn, error) {
//TestPingRedis 测试连接Redis
func (slf *RedisModule) TestPingRedis() error {
conn := slf.redispool.Get()
if conn == nil {
return fmt.Errorf("not get connection")
conn, err := slf.getConn()
if err != nil {
return err
}
defer conn.Close()
if conn.Err() != nil {
return conn.Err()
}
err := slf.redispool.TestOnBorrow(conn, time.Now())
err = slf.redispool.TestOnBorrow(conn, time.Now())
if err != nil {
return err
}
@@ -96,7 +92,7 @@ func (slf *RedisModule) TestPingRedis() error {
func (slf *RedisModule) SetRedisString(key, value string) (err error) {
err = slf.setRedisExStringByEx(key, value, "-1")
return
return err
}
//SetRedisExString redis添加string类型数据 有过期时间 ex过期时间,单位秒,必须是整数
@@ -130,14 +126,11 @@ func (slf *RedisModule) setRedisExStringByEx(key, value, ex string) error {
return errors.New("Key Is Empty")
}
conn := slf.redispool.Get()
if conn == nil {
return fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return err
}
defer conn.Close()
if conn.Err() != nil {
return conn.Err()
}
var ret interface{}
var retErr error
@@ -180,14 +173,11 @@ func (slf *RedisModule) setMuchRedisStringByEx(mapInfo map[string]string, ex str
if len(mapInfo) <= 0 {
return errors.New("Save Info Is Empty")
}
conn := slf.redispool.Get()
if conn == nil {
return fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return err
}
defer conn.Close()
if conn.Err() != nil {
return conn.Err()
}
// 开始Send数据
conn.Send("MULTI")
@@ -199,7 +189,7 @@ func (slf *RedisModule) setMuchRedisStringByEx(mapInfo map[string]string, ex str
}
}
// 执行命令
_, err := conn.Do("EXEC")
_, err = conn.Do("EXEC")
if err != nil {
return err
@@ -211,14 +201,11 @@ func (slf *RedisModule) setMuchRedisStringByEx(mapInfo map[string]string, ex str
//GetRedisString redis获取string类型数据
//示例:GetRedisString("TestKey")
func (slf *RedisModule) GetRedisString(key string) (string, error) {
conn := slf.redispool.Get()
if conn == nil {
return "", fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return "", err
}
defer conn.Close()
if conn.Err() != nil {
return "", conn.Err()
}
ret, err := conn.Do("GET", key)
if err != nil {
@@ -242,14 +229,11 @@ func (slf *RedisModule) GetRedisString(key string) (string, error) {
//GetRedisStringJSON redis获取string类型数据的Json
//示例:GetRedisString("TestKey")
func (slf *RedisModule) GetRedisStringJSON(key string, st interface{}) error {
conn := slf.redispool.Get()
if conn == nil {
return fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return err
}
defer conn.Close()
if conn.Err() != nil {
return conn.Err()
}
ret, err := conn.Do("GET", key)
if err != nil {
@@ -282,16 +266,11 @@ func (slf *RedisModule) GetMuchRedisString(keys []string) (retMap map[string]str
err = errors.New("Func[GetMuchRedisString] Keys Is Empty")
return
}
conn := slf.redispool.Get()
if conn == nil {
err = fmt.Errorf("Redis Not Get Connection")
return
conn, err := slf.getConn()
if err != nil {
return nil, err
}
defer conn.Close()
if conn.Err() != nil {
err = conn.Err()
return
}
// 开始Send数据
conn.Send("MULTI")
@@ -335,14 +314,11 @@ func (slf *RedisModule) GetMuchRedisStringJSON(keys map[string]interface{}) erro
err := errors.New("Func[GetMuchRedisStringJSON] Keys Is Empty")
return err
}
conn := slf.redispool.Get()
if conn == nil {
return fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return err
}
defer conn.Close()
if conn.Err() != nil {
return conn.Err()
}
// 开始Send数据
conn.Send("MULTI")
@@ -381,14 +357,11 @@ func (slf *RedisModule) GetMuchRedisStringJSON(keys map[string]interface{}) erro
//DelRedisString redis删除string类型数据
//示例:DelRedisString("AAAABTEST1")
func (slf *RedisModule) DelRedisString(key string) error {
conn := slf.redispool.Get()
if conn == nil {
return fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return err
}
defer conn.Close()
if conn.Err() != nil {
return conn.Err()
}
ret, err := conn.Do("DEL", key)
if err != nil {
@@ -417,14 +390,11 @@ func (slf *RedisModule) DelMuchRedisString(keys []string) (map[string]bool, erro
return nil, err
}
conn := slf.redispool.Get()
if conn == nil {
return nil, fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return nil, err
}
defer conn.Close()
if conn.Err() != nil {
return nil, conn.Err()
}
// 开始Send数据
conn.Send("MULTI")
@@ -465,14 +435,11 @@ func (slf *RedisModule) SetRedisHash(redisKey, hashKey, value string) error {
if redisKey == "" || hashKey == "" {
return errors.New("Key Is Empty")
}
conn := slf.redispool.Get()
if conn == nil {
return fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return err
}
defer conn.Close()
if conn.Err() != nil {
return conn.Err()
}
_, retErr := conn.Do("HSET", redisKey, hashKey, value)
@@ -488,15 +455,11 @@ func (slf *RedisModule) GetRedisAllHashJSON(redisKey string) (map[string]string,
if redisKey == "" {
return nil, errors.New("Key Is Empty")
}
conn := slf.redispool.Get()
if conn == nil {
return nil, errors.New("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return nil, err
}
defer conn.Close()
if conn.Err() != nil {
return nil, conn.Err()
}
value, err := redis.Values(conn.Do("HGETALL", redisKey))
if err != nil {
@@ -512,14 +475,11 @@ func (slf *RedisModule) GetRedisHashValueByKey(redisKey string, fieldKey string)
if redisKey == "" || fieldKey == "" {
return "", errors.New("Key Is Empty")
}
conn := slf.redispool.Get()
if conn == nil {
return "", errors.New("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return "", err
}
defer conn.Close()
if conn.Err() != nil {
return "", conn.Err()
}
value, err := conn.Do("HGET", redisKey, fieldKey)
if err != nil {
@@ -556,14 +516,11 @@ func (slf *RedisModule) SetMuchRedisHashJSON(redisKey string, value map[string][
return err
}
conn := slf.redispool.Get()
if conn == nil {
return fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return err
}
defer conn.Close()
if conn.Err() != nil {
return conn.Err()
}
// 开始Send数据
conn.Send("MULTI")
@@ -574,7 +531,7 @@ func (slf *RedisModule) SetMuchRedisHashJSON(redisKey string, value map[string][
}
}
// 执行命令
_, err := conn.Do("EXEC")
_, err = conn.Do("EXEC")
if err != nil {
return err
@@ -597,14 +554,11 @@ func (slf *RedisModule) DelMuchRedisHash(redisKey string, hsahKey []string) erro
if redisKey == "" || len(hsahKey) <= 0 {
return errors.New("Key Is Empty")
}
conn := slf.redispool.Get()
if conn == nil {
return fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return err
}
defer conn.Close()
if conn.Err() != nil {
return conn.Err()
}
arg := []interface{}{redisKey}
for _, k := range hsahKey {
@@ -628,14 +582,11 @@ func (slf *RedisModule) setRedisList(key string, value []string, setType string)
if setType != "LPUSH" && setType != "RPUSH" {
return errors.New("Redis List Push Type Error,Must Be LPUSH or RPUSH")
}
conn := slf.redispool.Get()
if conn == nil {
return fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return err
}
defer conn.Close()
if conn.Err() != nil {
return conn.Err()
}
arg := []interface{}{key}
for _, k := range value {
@@ -724,14 +675,11 @@ func (slf *RedisModule) SetMuchRedisListJSONRpush(key string, value []interface{
// Lrange ...
func (slf *RedisModule) Lrange(key string, start, end int) ([]string, error) {
conn := slf.redispool.Get()
if conn == nil {
return nil, fmt.Errorf("Redis Not Get Connection")
conn, err := slf.getConn()
if err != nil {
return nil, err
}
defer conn.Close()
if conn.Err() != nil {
return nil, conn.Err()
}
reply, err := conn.Do("lrange", key, start, end)
if err != nil {