From 8294e1f546d5949fbc63facc79821af7569b27c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Fri, 12 Aug 2022 14:43:30 +0800 Subject: [PATCH] =?UTF-8?q?enhance(cache):=E5=A2=9E=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E9=94=AE=E7=9A=84=E5=87=BD=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cache/abstract.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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