From e3668886087334853cef866d686c231f54153c08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Sun, 11 Jun 2023 18:48:48 +0800 Subject: [PATCH] =?UTF-8?q?enhance(cache):=E5=A2=9E=E5=8A=A0=E5=BF=AB?= =?UTF-8?q?=E9=80=9F=E5=A4=84=E7=90=86=E5=8F=AF=E7=A9=BA=E5=80=BC=E4=BD=9C?= =?UTF-8?q?=E4=B8=BARedis=E7=BC=93=E5=AD=98=E9=94=AE=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cache/abstract.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/cache/abstract.go b/cache/abstract.go index 8d24c69..02c13d6 100644 --- a/cache/abstract.go +++ b/cache/abstract.go @@ -137,3 +137,27 @@ func CacheKey(category string, ids ...string) string { } return b.String() } + +type ToString[T any] interface { + ToString() string + *T +} + +// 用于生成一个内容可以为空的Redis缓存键,这个键的类型必须实现了`ToString`接口。 +func NullableConditionKey[P any, T ToString[P]](value T, defaultStr ...string) string { + defaultStr = append(defaultStr, "UNDEF") + if value == nil { + return defaultStr[0] + } else { + return value.ToString() + } +} + +// 用于生成一个内容可以为空的字符串指针类型的Redis缓存键。 +func NullableStringKey(value *string, defaultStr ...string) string { + defaultStr = append(defaultStr, "UNDEF") + if value == nil { + return defaultStr[0] + } + return *value +}