| 536 | } |
| 537 | |
| 538 | func (us UnitSlice) Mset(c *Conn, vals ...interface{}) { |
| 539 | if len(us) != len(vals) { |
| 540 | Panic("mset: len(keys) = %d, len(vals) = %d", len(us), len(vals)) |
| 541 | } |
| 542 | args := make([]interface{}, len(us)*2) |
| 543 | for i := 0; i < len(us); i++ { |
| 544 | if vals[i] == nil { |
| 545 | Panic("mset: with nil argument, please use del instead") |
| 546 | } |
| 547 | args[i*2], args[i*2+1] = us[i].key, vals[i] |
| 548 | } |
| 549 | var rsp interface{} |
| 550 | defer func() { |
| 551 | if x := recover(); x != nil { |
| 552 | Panic("mset: c = %s, args = %v, error = '%s', rsp = %v", c.Addr(), args, x, rsp) |
| 553 | } |
| 554 | }() |
| 555 | var err error |
| 556 | if rsp, err = c.Do("mset", args...); err != nil { |
| 557 | panic(err) |
| 558 | } |
| 559 | for i := 0; i < len(us); i++ { |
| 560 | us[i].val = vals[i] |
| 561 | } |
| 562 | } |
| 563 | |
| 564 | func Trace() (r string, ss []string, full bool) { |
| 565 | bs := make([]byte, 16*1024) |