func (c *Cache) Pop(key string) (p *points.Points, exists bool) {
	// Try to get shard.
	shard := c.GetShard(key)
	shard.Lock()
	p, exists = shard.items[key]
	delete(shard.items, key)
	shard.Unlock()

	if exists {
		atomic.AddInt32(&c.stat.size, -int32(len(p.Data)))
	}

	return p, exists
}
func (c *Cache) Pop(key string) (p *points.Points, exists bool) {
	
	shard := c.GetShard(key)
	shard.Lock()
	p, exists = shard.items[key]
	delete(shard.items, key)
	shard.Unlock()

	if exists {
		atomic.AddInt32(&c.stat.size, -int32(len(p.Data)))
	}

	return p, exists
}
func ( c * Cache ) Pop ( key string ) ( p * points . Points , exists bool ) { // Try to get shard. shard := c . GetShard ( key ) shard . Lock ( ) p , exists = shard . items [ key ] delete ( shard . items , key ) shard . Unlock ( ) if exists { atomic . AddInt32 ( & c . stat . size , - int32 ( len ( p . Data ) ) ) } return p , exists }
// Pop removes an element from the map and returns it
Pop removes an element from the map and returns it