jetcache icon indicating copy to clipboard operation
jetcache copied to clipboard

增加redis层面hash结构的缓存读写支持

Open leechedan opened this issue 2 years ago • 1 comments

场景需求:

. 汇总数据查询:依赖的数据源较多,缓存键值变化较多,分布式系统。 . 使用spring注解,面向入门开发人员 . 某基础数据a更新后,需要清空A、B进程的该企业ID下的某业务的所有缓存 . 汇总计算的量比较大,使用缓存存在意义较大,否则DB层面很容易就将响应时间中位数拉长

使用hash的(相较于String)

优势:

. 将缓存数据存在{服务}{企业ID}{业务模块}的hash键下面,不同的汇总计算方式使用hash下的不同key存储,可以通过键名称快速删除(String下存储需要通过keys命令进行前缀匹配,目前使用注解可能无法做到)

劣势:

. 缓存的失效时间只能根据hash的key设置,无法设置到内部的key

不知道以上是否表述清楚了

提供支持

目前已经粗糙实现了lettuce的hash,putIfAbsent getAll除外。如果认为有必要,可以开个分支来实现。 实现注解name的Expression Eval 作为hash的key, key作为hash内部key 通过配置启用hash。

leechedan avatar Jul 08 '22 10:07 leechedan

我知道你的意思,想支持redis的hash commands。

jetcache原来设计是一个通用的缓存框架,先支持了tair,然后才支持了redis,如果不是偷懒本来还应该支持memcached。

redis特定的能力不能简单的直接实现,如果要做应该是做一个可选的AdvancedCache继承Cache接口。注解的话,比较难设计,容易引入复杂性和歧义。

areyouok avatar Jul 09 '22 04:07 areyouok