func NewDistributor(caches ...Cache) Distributor {
	if len(caches) == 0 {
		return nil
	}
	return &distrib{
		distribution: stdDistribution,
		caches:       caches,
		size:         uint64(len(caches)),
	}
}
NewDistributor returns a Distributor which evenly distributes the keyspace
into the passed caches.
package fscache
import (
	"bytes"
	"crypto/sha1"
	"encoding/binary"
	"io"
)
type Distributor interface {
	GetCache(key string) Cache
	Clean() error
}
func stdDistribution(key string, n uint64) uint64 {
	h := sha1.New()
	io.WriteString(h, key)
	buf := bytes.NewBuffer(h.Sum(nil)[:8])
	i, _ := binary.ReadUvarint(buf)
	return i % n
}