diff --git a/database/gredis/gredis_z_example_test.go b/database/gredis/gredis_z_example_test.go index 499d31b34..47cb81487 100644 --- a/database/gredis/gredis_z_example_test.go +++ b/database/gredis/gredis_z_example_test.go @@ -10,6 +10,7 @@ import ( "fmt" "github.com/gogf/gf/container/gvar" "github.com/gogf/gf/frame/g" + "github.com/gogf/gf/util/gutil" ) func Example_autoMarshalUnmarshalMap() { @@ -101,7 +102,7 @@ func Example_autoMarshalUnmarshalStructSlice() { fmt.Println(users2) } -func Example_hashSet() { +func Example_hSet() { var ( err error result *gvar.Var @@ -124,3 +125,54 @@ func Example_hashSet() { // May Output: // map[id:10000 name:john] } + +func Example_hMSet_Map() { + var ( + key = "user_100" + data = g.Map{ + "name": "gf", + "sex": 0, + "score": 100, + } + ) + _, err := g.Redis().Do("HMSET", append(g.Slice{key}, gutil.MapToSlice(data)...)...) + if err != nil { + g.Log().Fatal(err) + } + v, err := g.Redis().DoVar("HMGET", key, "name") + if err != nil { + g.Log().Fatal(err) + } + fmt.Println(v.Slice()) + + // May Output: + // [gf] +} + +func Example_hMSet_Struct() { + type User struct { + Name string `json:"name"` + Sex int `json:"sex"` + Score int `json:"score"` + } + var ( + key = "user_100" + data = &User{ + Name: "gf", + Sex: 0, + Score: 100, + } + ) + _, err := g.Redis().Do("HMSET", append(g.Slice{key}, gutil.StructToSlice(data)...)...) + if err != nil { + g.Log().Fatal(err) + } + v, err := g.Redis().DoVar("HMGET", key, "name") + if err != nil { + g.Log().Fatal(err) + } + fmt.Println(v.Slice()) + + // May Output: + // ["gf"] +} diff --git a/database/gredis/gredis_z_unit_test.go b/database/gredis/gredis_z_unit_test.go index e13d1934c..dc50185b6 100644 --- a/database/gredis/gredis_z_unit_test.go +++ b/database/gredis/gredis_z_unit_test.go @@ -10,6 +10,7 @@ import ( "github.com/gogf/gf/container/gvar" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/util/guid" + "github.com/gogf/gf/util/gutil" "testing" "time" @@ -255,9 +256,11 @@ func Test_HSet(t *testing.T) { func Test_HGetAll1(t *testing.T) { gtest.C(t, func(t *gtest.T) { - var err error - redis := gredis.New(config) - key := guid.S() + var ( + err error + key = guid.S() + redis = gredis.New(config) + ) defer redis.Do("DEL", key) _, err = redis.Do("HSET", key, "id", 100) @@ -296,6 +299,54 @@ func Test_HGetAll2(t *testing.T) { }) } +func Test_HMSet(t *testing.T) { + // map + gtest.C(t, func(t *gtest.T) { + var ( + err error + key = guid.S() + redis = gredis.New(config) + data = g.Map{ + "name": "gf", + "sex": 0, + "score": 100, + } + ) + defer redis.Do("DEL", key) + + _, err = redis.Do("HMSET", append(g.Slice{key}, gutil.MapToSlice(data)...)...) + t.Assert(err, nil) + v, err := redis.DoVar("HMGET", key, "name") + t.Assert(err, nil) + t.Assert(v.Slice(), g.Slice{data["name"]}) + }) + // struct + gtest.C(t, func(t *gtest.T) { + type User struct { + Name string `json:"name"` + Sex int `json:"sex"` + Score int `json:"score"` + } + var ( + err error + key = guid.S() + redis = gredis.New(config) + data = &User{ + Name: "gf", + Sex: 0, + Score: 100, + } + ) + defer redis.Do("DEL", key) + + _, err = redis.Do("HMSET", append(g.Slice{key}, gutil.StructToSlice(data)...)...) + t.Assert(err, nil) + v, err := redis.DoVar("HMGET", key, "name") + t.Assert(err, nil) + t.Assert(v.Slice(), g.Slice{data.Name}) + }) +} + func Test_Auto_Marshal(t *testing.T) { var ( err error