code: func (db *DB) LSet(key []byte, index int32, value []byte) error {
  	if err := checkKeySize(key); err != nil {
  		return err
  	}
  
  	var seq int32
  	var headSeq int32
  	var tailSeq int32
  	//var size int32
  	var err error
  	t := db.listBatch
  	t.Lock()
  	defer t.Unlock()
  	metaKey := db.lEncodeMetaKey(key)
  
  	headSeq, tailSeq, _, err = db.lGetMeta(nil, metaKey)
  	if err != nil {
  		return err
  	}
  
  	if index >= 0 {
  		seq = headSeq + index
  	} else {
  		seq = tailSeq + index + 1
  	}
  	if seq < headSeq || seq > tailSeq {
  		return errListIndex
  	}
  	sk := db.lEncodeListKey(key, seq)
  	t.Put(sk, value)
  	err = t.Commit()
  	return err
  }
docs: // LSet sets the value at index.