optimize locks for sinterstore/sunionstore/sdiffstore

This commit is contained in:
hdt3213
2021-05-27 22:06:57 +08:00
parent f1455534d4
commit 6ee2789d6f
3 changed files with 54 additions and 15 deletions

21
set.go
View File

@@ -208,11 +208,8 @@ func execSInterStore(db *DB, args [][]byte) redis.Reply {
}
// lock
lockedKeySet := HashSet.Make(keys...)
lockedKeySet.Add(dest)
lockedKeys := lockedKeySet.ToSlice()
db.Locks(lockedKeys...)
defer db.UnLocks(lockedKeys...)
db.RWLocks([]string{dest}, keys)
defer db.RWUnLocks([]string{dest}, keys)
var result *HashSet.Set
for _, key := range keys {
@@ -299,11 +296,8 @@ func execSUnionStore(db *DB, args [][]byte) redis.Reply {
}
// lock
lockedKeySet := HashSet.Make(keys...)
lockedKeySet.Add(dest)
lockedKeys := lockedKeySet.ToSlice()
db.Locks(lockedKeys...)
defer db.UnLocks(lockedKeys...)
db.RWLocks([]string{dest}, keys)
defer db.RWUnLocks([]string{dest}, keys)
var result *HashSet.Set
for _, key := range keys {
@@ -397,11 +391,8 @@ func execSDiffStore(db *DB, args [][]byte) redis.Reply {
}
// lock
lockedKeySet := HashSet.Make(keys...)
lockedKeySet.Add(dest)
lockedKeys := lockedKeySet.ToSlice()
db.Locks(lockedKeys...)
defer db.UnLocks(lockedKeys...)
db.RWLocks([]string{dest}, keys)
defer db.RWUnLocks([]string{dest}, keys)
var result *HashSet.Set
for i, key := range keys {