fix(cache):修复缓存关联关系被不正常清除的问题。

This commit is contained in:
徐涛 2022-09-06 15:53:24 +08:00
parent 8aa4e38760
commit 0d2b1431b6
2 changed files with 5 additions and 5 deletions

11
cache/relation.go vendored
View File

@ -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

View File

@ -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)