func (n *Nop) Close() error {
	return nil
}
Close does nothing for nop cache
package lcw
import (
	"fmt"
)
type Sizer interface {
	Size() int
}
type LoadingCache interface {
	Get(key string, fn func() (interface{}, error)) (val interface{}, err error)  
	Peek(key string) (interface{}, bool)                                          
	Invalidate(fn func(key string) bool)                                          
	Delete(key string)                                                            
	Purge()                                                                       
	Stat() CacheStat                                                              
	Keys() []string                                                               
	Close() error                                                                 
}
type CacheStat struct {
	Hits   int64
	Misses int64
	Keys   int
	Size   int64
	Errors int64
}
func (s CacheStat) String() string {
	ratio := 0.0
	if s.Hits+s.Misses > 0 {
		ratio = float64(s.Hits) / float64(s.Hits+s.Misses)
	}
	return fmt.Sprintf("{hits:%d, misses:%d, ratio:%.2f, keys:%d, size:%d, errors:%d}",
		s.Hits, s.Misses, ratio, s.Keys, s.Size, s.Errors)
}
type Nop struct{}
func NewNopCache() *Nop {
	return &Nop{}
}
func (n *Nop) Get(key string, fn func() (interface{}, error)) (interface{}, error) { return fn() }
func (n *Nop) Peek(key string) (interface{}, bool) { return nil, false }
func (n *Nop) Invalidate(fn func(key string) bool) {}
func (n *Nop) Purge() {}
func (n *Nop) Delete(key string) {}
func (n *Nop) Keys() []string { return nil }
func (n *Nop) Stat() CacheStat {
	return CacheStat{}
}