forked from free-lancers/electricity_bill_calc_service
enhance(cache):现在一个缓存内容可以被关联到多个主题了。
This commit is contained in:
6
cache/count.go
vendored
6
cache/count.go
vendored
@@ -17,11 +17,13 @@ func assembleCountIdentification(additional ...string) string {
|
||||
}
|
||||
|
||||
// 向缓存中缓存模型名称明确的包含指定条件的实体记录数量
|
||||
func CacheCount(relationName, entityName string, count int64, conditions ...string) error {
|
||||
func CacheCount(relationNames []string, entityName string, count int64, conditions ...string) error {
|
||||
countKey := assembleCountKey(entityName)
|
||||
identification := assembleCountIdentification(conditions...)
|
||||
result := global.RedisConn.HSet(global.Ctx, countKey, map[string]interface{}{identification: count})
|
||||
CacheRelation(relationName, STORE_TYPE_HASH, countKey, identification)
|
||||
for _, relationName := range relationNames {
|
||||
CacheRelation(relationName, STORE_TYPE_HASH, countKey, identification)
|
||||
}
|
||||
return result.Err()
|
||||
}
|
||||
|
||||
|
6
cache/entity.go
vendored
6
cache/entity.go
vendored
@@ -18,10 +18,12 @@ func assembleEntityKey(entityName, id string) string {
|
||||
}
|
||||
|
||||
// 缓存模型名称明确的,使用ID进行检索的实体内容。
|
||||
func CacheEntity[T any](instance T, relationName, entityName, id string) error {
|
||||
func CacheEntity[T any](instance T, relationNames []string, entityName, id string) error {
|
||||
entityKey := assembleEntityKey(entityName, id)
|
||||
err := Cache(entityKey, &instance, 0)
|
||||
CacheRelation(relationName, STORE_TYPE_KEY, entityKey)
|
||||
for _, relationName := range relationNames {
|
||||
CacheRelation(relationName, STORE_TYPE_KEY, entityKey)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
|
6
cache/exists.go
vendored
6
cache/exists.go
vendored
@@ -18,11 +18,13 @@ func assembleExistsIdentification(additional ...string) string {
|
||||
}
|
||||
|
||||
// 缓存模型名称明确的、包含指定ID以及一些附加条件的记录
|
||||
func CacheExists(relationName, entityName string, conditions ...string) error {
|
||||
func CacheExists(relationNames []string, entityName string, conditions ...string) error {
|
||||
existskey := assembleExistsKey(entityName)
|
||||
identification := assembleExistsIdentification(conditions...)
|
||||
result := global.RedisConn.SAdd(global.Ctx, existskey, identification)
|
||||
CacheRelation(relationName, STORE_TYPE_SET, existskey, identification)
|
||||
for _, relationName := range relationNames {
|
||||
CacheRelation(relationName, STORE_TYPE_SET, existskey, identification)
|
||||
}
|
||||
return result.Err()
|
||||
}
|
||||
|
||||
|
6
cache/search.go
vendored
6
cache/search.go
vendored
@@ -19,10 +19,12 @@ func assembleSearchKey(entityName string, additional ...string) string {
|
||||
}
|
||||
|
||||
// 缓存模型名称明确的,使用或者包含非ID检索条件的实体内容。
|
||||
func CacheSearch[T any](instance T, relationName, entityName string, conditions ...string) error {
|
||||
func CacheSearch[T any](instance T, relationNames []string, entityName string, conditions ...string) error {
|
||||
searchKey := assembleSearchKey(entityName, conditions...)
|
||||
err := Cache(searchKey, &instance, 0)
|
||||
CacheRelation(relationName, STORE_TYPE_KEY, searchKey)
|
||||
for _, relationName := range relationNames {
|
||||
CacheRelation(relationName, STORE_TYPE_KEY, searchKey)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user