diff --git a/cache/abstract.go b/cache/abstract.go index dc8cb9a..bea1910 100644 --- a/cache/abstract.go +++ b/cache/abstract.go @@ -59,6 +59,28 @@ func Delete(key string) (bool, error) { return result > 0, nil } +// 从Redis缓存中批量删除符合pattern的键,这里的pattern直接使用Redis的pattern规则 +func DeleteAll(pattern string) error { + var ( + cursor uint64 + keys = make([]string, 0) + ) + for { + k, cursor, err := global.RedisConn.Scan(global.Ctx, cursor, pattern, 20).Result() + if err != nil { + return err + } + keys = append(keys, k...) + if cursor == 0 { + break + } + } + pipeline := global.RedisConn.Pipeline() + pipeline.Del(global.Ctx, keys...) + _, err := pipeline.Exec(global.Ctx) + return err +} + // 生成用于Redis存储的键 func CacheKey(category string, ids ...string) string { var b strings.Builder