fix(cache):修复缓存关联关系被不正常清除的问题。
This commit is contained in:
parent
8aa4e38760
commit
0d2b1431b6
11
cache/relation.go
vendored
11
cache/relation.go
vendored
|
@ -98,19 +98,18 @@ func ClearOrphanRelationItems() error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
keysNeedRemove := make([]string, 0)
|
|
||||||
for _, item := range relationItems {
|
for _, item := range relationItems {
|
||||||
exist, err := Exists(item)
|
separated := strings.Split(item, ";")
|
||||||
|
exist, err := Exists(separated[1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if !exist {
|
if !exist {
|
||||||
keysNeedRemove = append(keysNeedRemove, item)
|
cmd := global.RedisConn.B().Srem().Key(key).Member(item).Build()
|
||||||
}
|
|
||||||
}
|
|
||||||
cmd := global.RedisConn.B().Srem().Key(key).Member(keysNeedRemove...).Build()
|
|
||||||
cmds = append(cmds, cmd)
|
cmds = append(cmds, cmd)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
errs := global.RedisConn.DoMulti(global.Ctx, cmds...)
|
errs := global.RedisConn.DoMulti(global.Ctx, cmds...)
|
||||||
firstErr, has := lo.Find(errs, func(elem rueidis.RedisResult) bool {
|
firstErr, has := lo.Find(errs, func(elem rueidis.RedisResult) bool {
|
||||||
return elem.Error() != nil
|
return elem.Error() != nil
|
||||||
|
|
1
main.go
1
main.go
|
@ -160,6 +160,7 @@ func DBConnectionKeepLive() {
|
||||||
|
|
||||||
func RedisOrphanCleanup() {
|
func RedisOrphanCleanup() {
|
||||||
for range time.Tick(2 * time.Minute) {
|
for range time.Tick(2 * time.Minute) {
|
||||||
|
log.Printf("[Cache] [Cleanup] Proceeding cleanup orphan keys.")
|
||||||
err := cache.ClearOrphanRelationItems()
|
err := cache.ClearOrphanRelationItems()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[Cache] [Cleanup] Orphan keys clear failed: %v", err)
|
log.Printf("[Cache] [Cleanup] Orphan keys clear failed: %v", err)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user