mirror of
https://github.com/HDT3213/godis.git
synced 2025-11-03 02:53:57 +08:00
optimize locks for sinterstore/sunionstore/sdiffstore
This commit is contained in:
21
set.go
21
set.go
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user