code: func (c *Conn) GetBulkBytes(keys map[string][]byte) error {
  
  	// The format for querying multiple keys in KT is to send a
  	// TSV value for each key with a _ as a prefix.
  	// KT then returns the value as a TSV set with _ in front of the keys
  	keystransmit := make([]KV, 0, len(keys))
  	for k, _ := range keys {
  		// we set the value to nil because we want a sentinel value
  		// for when no data was found. This is important for
  		// when we remove the not found keys from the map
  		keys[k] = nil
  		keystransmit = append(keystransmit, KV{"_" + k, zeroslice})
  	}
  	code, m, err := c.doRPC("/rpc/get_bulk", keystransmit)
  	if err != nil {
  		return err
  	}
  	if code != 200 {
  		return makeError(m)
  	}
  	for _, kv := range m {
  		if kv.Key[0] != '_' {
  			continue
  		}
  		keys[kv.Key[1:]] = kv.Value
  	}
  	for k, v := range keys {
  		if v == nil {
  			delete(keys, k)
  		}
  	}
  	return nil
  }
docs: // GetBulkBytes retrieves the keys in the map. The results will be filled in on function return.
  // If a key was not found in the database, it will be removed from the map.