Redis对业务层数据缓存

问题引入开发中,一些业务查询到的数据并不经常改变(如一些网站的热销榜单….),但每次都去操作数据层获取数据,这样就会影响系统性能,响应速度。为了提高查询效率,可以对一些不常变更的业务层数据进行Redis缓存。缓存数据的数据结构设计由于缓存数据应该是分模块的,每个模块的每个方法缓存的数据又不一样,基于这种情况,采用Redis的HASH类型存储比较好,每个模块抽象为Hashkey,模块下的...
摘要由CSDN通过智能技术生成

问题引入

开发中,一些业务查询到的数据并不经常改变(如一些网站的热销榜单….),但每次都去操作数据层获取数据,这样就会影响系统性能,响应速度。为了提高查询效率,可以对一些不常变更的业务层数据进行Redis缓存。

缓存数据的数据结构设计

由于缓存数据应该是分模块的,每个模块的每个方法缓存的数据又不一样,基于这种情况,采用Redis的HASH类型存储比较好,每个模块抽象为Hashkey,模块下的每个方法抽象为field,数据为value。

针对这样的缓存数据结构,产生了几个问题

  1. 每个模块依什么样的形式转换为key
  2. 模块下的方法依什么样的形式转换为field
  3. 查询到的数据用什么样的方式存贮到value中

问题1:
在java中模块都是按类化分的,每个类的全限定名,在系统中唯一,所以可以存贮类的全限定的名为key。为了避免类的名字过长存储不便的问题,可以利用MD5加密的特性,对此加密后在做key使用

问题2:
这个问题的解决思路和问题1的解决思路基本相同,可以使用方法的签名来保证field唯一,但方法里面的形参具有实际意义,形参值不一样,缓存的数据也应不一样,因此field字段应为 MD5(方法签名+形参值)

问题3:
系统中查询到的数据多为对象ÿ

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值