mybatisplus二级缓存j2cache
简介
j2cache是开源两级缓存框架,可降低缓存网络开销
L1(一级缓存):caffeine或者ehcache
L2(二级缓存):redis或者memcached
没有完美的解决方案,方案解决了一些问题,也会带来另一些问题
j2cache带来的问题/局限
说到缓存必然要考虑数据一致性的问题
二级缓存默认的有效期是永久的,采用LRU算法清理缓存。缓存的key为sql查询语句,值为查询结果。
那么缓存什么时候更新呢?
当这个mapper执行修改操作,会清除此Mapper的查询缓存,当然,得走的是同一个sqlSessionFactory才能监控到。
**这会带来一个问题 **
例如我在UserMapper中的某个查询关联dept表查询部门名称,而在这之前通过deptMapper更新了部门名称,deptMapper中的查询缓存刷新了,但是UserMapper中关联dept的查询的缓存并未清除,此时调用会命中缓存,导致查询的部门名称数据不一致。