fix issue in gredis for int set/get

This commit is contained in:
John
2019-12-04 18:43:16 +08:00
parent 8448a70646
commit f7d6883405
2 changed files with 32 additions and 0 deletions

View File

@ -15,6 +15,7 @@ package gredis
import (
"fmt"
"github.com/gogf/gf/util/gconv"
"time"
"github.com/gogf/gf/container/gmap"
@ -186,5 +187,8 @@ func (r *Redis) Do(command string, args ...interface{}) (interface{}, error) {
// DoVar returns value from Do as gvar.Var.
func (r *Redis) DoVar(command string, args ...interface{}) (*gvar.Var, error) {
v, err := r.Do(command, args...)
if result, ok := v.([]byte); ok {
return gvar.New(gconv.UnsafeBytesToStr(result)), err
}
return gvar.New(v), err
}

View File

@ -7,6 +7,8 @@
package gredis_test
import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/guuid"
"testing"
"time"
@ -223,3 +225,29 @@ func Test_Bool(t *testing.T) {
gtest.Assert(r.Bool(), false)
})
}
func Test_Int(t *testing.T) {
gtest.Case(t, func() {
redis := gredis.New(config)
key := guuid.New()
_, err := redis.Do("SET", key, 1)
gtest.Assert(err, nil)
r, err := redis.DoVar("GET", key)
gtest.Assert(err, nil)
gtest.Assert(r.Int(), 1)
})
}
func Test_HSet(t *testing.T) {
gtest.Case(t, func() {
redis := gredis.New(config)
key := guuid.New()
_, err := redis.Do("HSET", key, "name", "john")
gtest.Assert(err, nil)
r, err := redis.DoVar("HGETALL", key)
gtest.Assert(err, nil)
gtest.Assert(r.Strings(), g.ArrayStr{"name", "john"})
})
}