aboutsummaryrefslogtreecommitdiff
path: root/shards.go
diff options
context:
space:
mode:
Diffstat (limited to 'shards.go')
-rw-r--r--shards.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/shards.go b/shards.go
index bd19751..cba4dd4 100644
--- a/shards.go
+++ b/shards.go
@@ -16,4 +16,11 @@ func (db *RedisDB) getShard(key string)*Shard{
val := hash.Sum64()
return db.shards[val%16]
-} \ No newline at end of file
+}
+
+func (db *RedisDB) Execute(key string, fn func(*Shard) interface{}) interface{} {
+ shard := db.getShard(key)
+ shard.mu.Lock()
+ defer shard.mu.Unlock()
+ return fn(shard)
+}