code: func (t *Transaction) WatchKey(key string) error {
  	if len(t.actions) != 0 {
  		return fmt.Errorf("Cannot call WatchKey after other commands have been added to the transaction")
  	}
  	if _, err := t.conn.Do("WATCH", key); err != nil {
  		return err
  	}
  	t.watching = append(t.watching, key)
  	return nil
  }
docs: // WatchKey issues a Redis WATCH command using the given key. If the key changes
  // before the transaction is executed, Exec will return a WatchError and the
  // commands in the transaction will not be executed. Unlike most other
  // transaction methods, WatchKey does not use delayed execution. Because of how
  // the WATCH command works, WatchKey must send a command to Redis immediately.
  // You must call Watch or WatchKey before any other transaction methods.