MyBatis与Memcached集成后缓存数据不一致问题

缓存数据生成到memcache的过程如下:

一、查询数据:

1、根据执行的sql语句转换为缓存的sqlKey值
2、根据sqlKey值查询memcache的缓存数据
3、如果查询到缓存数据返回缓存数据
4、如果查询不到缓存数据则执行sql查询
5、根据执行的sql语句转换为缓存的sqlKey值
6、根据 mapper namespace 生成 groupKey
7、sql查询结果放入缓存,数据结构【sqlKey(sql语句转换为的缓存sqlKey值),object(sql查询结果)】
8、sql语句转换为的缓存sqlKey值关联到groupKey,数据结构【groupKey,[sqlKey1,sqlKey2,sqlKey3,...](set结果集)】


二、增加、删除、修改数据:
1、执行插入、删除或更新sql
2、根据 mapper namespace 生成 groupKey
3、根据groupKey查询sqlKey
4、根据sqlKey集合大小循环删除sqlKey缓存数据
5、最后删除groupKey缓存数据

猜你喜欢

转载自www.cnblogs.com/wangjian1990/p/9008268.html