Atitit 缓存实施遇到的问题与解决 s420 attilax 艾提拉总结
Atitit 缓存增加最佳实践与实施流程
1. 业务准确性问题正确性问题 1
1.1. 缓存key正确性问题 1
1.2. 缓存key规范 class.method:(p1,p2) java序列化 1
1.3. 备用规范 class.method:(p1,p2) json序列化 2
1.4. Mybatis默认全部select缓存的问题,使用白名单机制解决 2
2. 可读性可维护性 2
2.1. key的生成可读性问题 2
2.2. Val的可读性,可以增加一个可读val方便调试 序列化为json模式 2
3. 稳定性增加 3
3.1. Get ex try catch 增加 3
3.2. Set ex try catch 增加 3
3.3. Key 生成器 try catch 3
3.4. Redis 断开问题 trycatch 3
4. 性能方面 3
4.1. Set 异步问题 3
4.2. 本地redis 代替远程redis 。 3
4.3. Redis 断开重连 定时检测redis 与切换状态 3
4.4. Future timeout机制50ms获取 防止切换失效后的第二机制 3
1. 业务准确性问题正确性问题1.1. 缓存key正确性问题
默认spring key使用参数。。但是不同的方法可能使用相同的参数,会带来问题。。
自己实现key gene。。。
class.method:(p1,p2,p3) 保证了准确性和可读性
1.2. 缓存key规范 class.method:(p1,p2) java序列化
万一参数json序列化异常后的 随机数模式 ,或者使用 参数类型+hascode代替
1.3. 备用规范 class.method:(p1,p2) json序列化
1.4. Mybatis默认全部select缓存的问题,使用白名单机制解决
Spring默认白名单
2. 可读性可维护性2.1. key的生成可读性问题
最好使用文本型key,mybatis的序列化key就不好。。
class.method:p1,p2,p3
2.2. Val的可读性,可以增加一个可读val方便调试 序列化为json模式
3.稳定性增加3.1. Get ex try catch 增加
3.2. Set ex try catch 增加
3.3. Key 生成器 try catch
3.4. Redis 断开问题 trycatch
定时测试器。。
4. 性能方面4.1. Set 异步问题
4.2. 本地redis 代替远程redis 。
4.3. Redis 断开重连 定时检测redis 与切换状态
可维护性 可读性
不要使用guava
4.4. Future timeout机制50ms获取 防止切换失效后的第二机制
Atitit title 头衔 头街 称号 v22