code: func (c *RegionCache) getCachedRegion(id RegionVerID) *Region {
  	cachedRegion, ok := c.mu.regions[id]
  	if !ok {
  		return nil
  	}
  	if cachedRegion.isValid() {
  		atomic.StoreInt64(&cachedRegion.lastAccess, time.Now().Unix())
  		return cachedRegion.region
  	}
  	return nil
  }
docs: // getCachedRegion loads a region from cache. It also checks if the region has
  // not been accessed for a long time (maybe out of date). In this case, it
  // returns nil so the region will be loaded from PD again.
  // Note that it should be called with c.mu.RLock(), and the returned Region
  // should not be used after c.mu is RUnlock().