Interface CacheKeyBuilder
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
key命名风格 【推荐】 Redis key命名需具有可读性以及可管理性,不该使用含义不清的key以及特别长的key名; 【强制】以英文字母开头,命名中只能出现小写字母、数字、英文点号(.)和英文半角冒号(:); 【强制】不要包含特殊字符,如下划线、空格、换行、单双引号以及其他转义字符;
命名规范 【强制】命名规范:[前缀:][租户编码:][服务模块名:]业务类型[:业务字段][:value类型][:业务值] 0)前缀: 可选。 用来区分不同项目,不同环境。 如:区分lamp-cloud 或 lamp-boot、lamp-cloud的dev或test环境 1)租户ID: 可选。 用来区分不同租户数据缓存。 如: 内置租户和阿里巴巴租户分别用0000 和 1111 来区分。 2)服务模块名:可选。 用来区分不同服务或功能模块的缓存。 如: 仅在权限服务使用和仅在消息服务使用的缓存分别用authority和msg来区分,多个服务共用的缓存可以不设置该段,或者设置为common。 3) 业务类型: 必填。 用来区分不同业务类型的数据缓存。 通常设置为表名。 同一key有多个业务类型时, 使用英文半角点号 (.)分割,用来表示一个完整的语义。 如user.activity 表示存储用户和活动、 user表示存储用户如:用户表、应用表分别用 user、application来区分。 4) 业务字段: 可选。用来区分业务值是那个字段。 通常设置为字段名。 同一key有多个业务类型时,业务字段对应多个业务类型。使用英文半角点号 (.)分割,用来表示一个完整的语义。 如业务类型为 user.activity 表示存储用户和活动, 则应该用id.id 跟user.activity 对应,表示key中包user的id 和 activity的id 5) value类型: 可选。 用来区分value。 Redis key命名包含key所代表的value类型,以提高可读性。 如: obj 表示value是对象,number表示value是数字, string 表示value是字符串。 6) 业务值 :可选。 用来区分同一业务类型的不同行的数据缓存。如:用户表id为1的数据和id为2的,分别是指该值为1和2。
示例: 注意: => 左边表示缓存的完整key , => 右边表示缓存存储的值
0000:authority:user.activity:id.id:1:3:number => [1,2,3,4] 表示:用户1活动3的奖品: 租户(0000),权限服务(authority)中用户表(user)的用户id(id)为 1, 活动表(activity)的活动id(id)为 3 的数据,存储在list结构的缓存中的值是(number)类型的 [1, 2, 3, 4] 0000:authority:user:id:1:obj => {"id:":1, "name:"张三"} 表示:租户(0000),权限服务(authority)中用户表(user)的用户id(id)为 1 的数据,存储(obj)类型的值 ({"id:":1, "name:"张三"}) 0000:authority:user:account:zhangsan:obj => {"id:":1, "name:"张三"} 表示:租户(0000),权限服务(authority)中用户表(user)的用户账号(account)为 zhangsan 的数据,存储(obj)类型的值 ({"id:":1, "name:"张三"}) tenant:id:1:obj => {"id:":1, "name:"租户1"} 表示:租户表(tenant)的租户id(id)为 1 的数据,存储(obj)类型的值 (** {"id:":1, "name:"租户1"}**)
- Author:
- zuihou
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptiondefault Duration缓存自动过期时间default StringgetField()key的字段名, 用于区分字段default String服务模块名,用于区分后端服务、前端模块等default String获取通配符default String缓存前缀,用于区分项目,环境等等getTable()key的业务类型, 用于区分表default String租户ID,用于区分租户default CacheKeyBuilder.ValueType缓存的value存储的类型default CacheHashKeyhashFieldKey(Object field, Object... uniques) 构建 redis 类型的 hash cache keydefault CacheHashKey构建 redis 类型的 hash cache key (无field)default CacheKey构建通用KV模式 的 cache key 兼容 redis caffeinedefault CacheKeyBuildersetTenantId(Long tenantId) 设置企业id
-
Method Details
-
getPrefix
缓存前缀,用于区分项目,环境等等- Returns:
- 缓存前缀
-
setTenantId
设置企业id- Parameters:
tenantId- 企业id- Returns:
- 构造器
-
getModular
服务模块名,用于区分后端服务、前端模块等- Returns:
- 服务模块名
-
getTable
key的业务类型, 用于区分表- Returns:
- 通常是表名
-
getTenant
租户ID,用于区分租户非租户模式设置成空字符串
- Returns:
- 租户ID
-
getField
key的字段名, 用于区分字段- Returns:
- 通常是key的字段名
-
getValueType
缓存的value存储的类型- Returns:
- value类型
-
getExpire
缓存自动过期时间- Returns:
- 缓存自动过期时间
-
getPattern
获取通配符- Returns:
- key 前缀
-
key
构建通用KV模式 的 cache key 兼容 redis caffeine- Parameters:
uniques- 参数- Returns:
- cache key
-
hashFieldKey
构建 redis 类型的 hash cache key- Parameters:
field- fielduniques- 动态参数- Returns:
- cache key
-
hashKey
构建 redis 类型的 hash cache key (无field)- Parameters:
uniques- 动态参数- Returns:
- cache key
-