Redis分布式缓存
缓存在项目中的应用
通过前面的学习我们知道,如果项目中表查询之间没有任何关联查询,那么使用现在的这种缓存方式没有任何问题。但是,一旦我们做了表连接查询,A表数据的更新不会影响到B,B中缓存的数据还是原始的A。那么如何解决关联关系时跟新缓存信息的问题?
关联关系的缓存处理
共享缓存:无论你是几个模块有关联关系,只需要把这几个模块都指向你选择的任意一方都行。
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.baizhi.dao.A">
<!--注意这俩namespace不一样-->
<!--关联关系缓存处理,这里的意思是让A的缓存也放入B里,所以只要任意一方做了更新,这个缓存都会被清除掉-->
<cache-ref namespace="com.baizhi.dao.B"/>
</mapper>
缓存优化策略
对放入redis中key进行优化:用MD5这个算法对key处理
MD5算法特点:
- 一切文件字符串等经过MD5处理之后都会生成32位16进制的字符串
- 不同内容文件经过MD5进行加密,加密结果一定不一致。涉及到面试题:怎么判断aa.txt bb.txt这两个文件的内容是一样的 答:使用MD5对文件加密,如果加密结果是一致的,那这两个文件的内容一定是一样的
- 相同内容文件多次经过MD5生成结果一致
推荐:在redis整合mybatis过程中建议将key进行MD5优化处理
所以怎么对key进行MD5处理?封装一个对key进行MD5的处理方法,再对放和取中的key进行处理
//自定义Redis缓存实现
public