func ExtactKeyAndValue(frame []byte) (key, value []byte, err error) {

	reader := NewReader(bytes.NewReader(frame))

	// skip request message length
	reader.readLine()

	// skip key command length
	reader.readLine()

	// skip command
	reader.readLine()

	// skip key  length
	reader.readLine()
	key, err = reader.readLine()
	if err != nil {
		return nil, nil, err
	}
	key = key[:len(key)-2]

	// skip value length
	reader.readLine()
	// take value
	value, err = reader.readLine()
	if err != nil {
		return nil, nil, err
	}
	value = value[:len(value)-2]

	return
}
// ExtractKeyAndValue extract key and value for dispatch backend server
ExtractKeyAndValue extract key and value for dispatch backend server
// ExtractKeyAndValue extract key and value for dispatch backend server
func ExtactKeyAndValue(frame []byte) (key, value []byte, err error) {
	reader := NewReader(bytes.NewReader(frame))
	reader.readLine()
	reader.readLine()
	reader.readLine()
	reader.readLine()
	key, err = reader.readLine()
	if err != nil {
		return nil, nil, err
	}
	key = key[:len(key)-2]
	reader.readLine()
	value, err = reader.readLine()
	if err != nil {
		return nil, nil, err
	}
	value = value[:len(value)-2]
	return
}
func ExtactKeyAndValue ( frame [ ] byte ) ( key , value [ ] byte , err error ) { reader := NewReader ( bytes . NewReader ( frame ) ) reader . readLine ( ) reader . readLine ( ) reader . readLine ( ) reader . readLine ( ) key , err = reader . readLine ( ) if err != nil { return nil , nil , err } key = key [ : len ( key ) - 2 ] reader . readLine ( ) value , err = reader . readLine ( ) if err != nil { return nil , nil , err } value = value [ : len ( value ) - 2 ] return }
ExtractKeyAndValue extract key and value for dispatch backend server
ExtractKeyAndValue extract key and value for dispatch backend server
// skip request message length // skip key command length // skip command // skip key  length // skip value length // take value