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 +}