1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
package main import ( "hash/fnv" "sync" ) type Shard struct{ mu sync.Mutex data map[string]Item } func (db *RedisDB) getShard(key string)*Shard{ hash := fnv.New64a() hash.Write([]byte(key)) val := hash.Sum64() return db.shards[val%16] }