code: func (mc *CCacheMetric) Del(ts uint32) int {
  	mc.Lock()
  	defer mc.Unlock()
  
  	if _, ok := mc.chunks[ts]; !ok {
  		return len(mc.chunks)
  	}
  
  	prev := mc.chunks[ts].Prev
  	next := mc.chunks[ts].Next
  
  	if prev != 0 {
  		if _, ok := mc.chunks[prev]; ok {
  			mc.chunks[prev].Next = 0
  		}
  	}
  
  	if next != 0 {
  		if _, ok := mc.chunks[next]; ok {
  			mc.chunks[next].Prev = 0
  		}
  	}
  
  	delete(mc.chunks, ts)
  
  	// regenerate the list of sorted keys after deleting a chunk
  	// NOTE: we can improve perf by just taking out the ts (partially rewriting
  	// the slice in one go), can we also batch deletes?
  	mc.generateKeys()
  
  	return len(mc.chunks)
  }
docs: // Del deletes chunks for the given timestamp