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