如前所述,
Do不适用于地图。这是您可以解决它的一种方法。
} else if e.Command == "HMSET" { // Build up a string slice to hold the key value pairs args := make([]string, 0, len(e.MapData) * 2) for k, v := range e.MapData { args = append(args, k, v) } _,err := redis.StringMap(client.Do("HMSET", e.Key, args...)) checkErr(err, "hmset error:")}Do方法映射到Redis命令集,并且期望参数的方式相同。例如。
127.0.0.1:6379> HMSET myKey foo bar baz boffOK127.0.0.1:6379> HGETALL myKey1) "foo"2) "bar"3) "baz"4) "boff"127.0.0.1:6379>
在代码中使用redis客户端进行相同的地图设置操作将是
client.Do("HMSET", "myKey", "foo", "bar", "baz", "boff")当映射的键和值的参数是动态的时,最直接的方法是
client.Do("HMSET", "myKey", []string{"foo", "bar", "baz", "boff"}...)这正是上面的第一个代码块所做的。



