code: func (c *RawKVClient) BatchGet(keys [][]byte) ([][]byte, error) {
  	start := time.Now()
  	defer func() {
  		tikvRawkvCmdHistogramWithBatchGet.Observe(time.Since(start).Seconds())
  	}()
  
  	bo := NewBackoffer(context.Background(), rawkvMaxBackoff)
  	resp, err := c.sendBatchReq(bo, keys, tikvrpc.CmdRawBatchGet)
  	if err != nil {
  		return nil, errors.Trace(err)
  	}
  
  	cmdResp := resp.RawBatchGet
  	if cmdResp == nil {
  		return nil, errors.Trace(ErrBodyMissing)
  	}
  
  	keyToValue := make(map[string][]byte, len(keys))
  	for _, pair := range cmdResp.Pairs {
  		keyToValue[string(pair.Key)] = pair.Value
  	}
  
  	values := make([][]byte, len(keys))
  	for i, key := range keys {
  		values[i] = keyToValue[string(key)]
  	}
  	return values, nil
  }
docs: // BatchGet queries values with the keys.