• 使用redis做mybaties的二级缓存(2)-Mybatis 二级缓存小心使用


    Mybatis默认对二级缓存是关闭的,一级缓存默认开启;

    下面就说说为什么使用二级缓存需要注意:

        二级缓存是建立在同一个namespace下的,如果对表的操作查询可能有多个namespace,那么得到的数据就是错误的。

        举个简单的例子,订单和订单详情,orderMapper、orderDetailMapper、在查询订单详情时我们需要把订单信息也查询出来,那么这个订单详情的信息被二级缓存在orderDetailMapper的namespace中,这个时候有人要修改订单的基本信息,那就是在orderMapper的namespace下修改,他是不会影响到orderDetailMapper的缓存的,那么你再次查找订单详情时,拿到的是缓存的数据,这个数据其实已经是过时的。

    根据以上,想要使用二级缓存时需要想好两个问题:

    1)对该表的操作与查询都在同一个namespace下,其他的namespace如果有操作,就会发生数据过时。

    2)对关联表的查询,关联的所有表的操作都必须在同一个namespace。

    总之,操作与查询在同一个namespace下的查询才能缓存,其他namespace下的查询都可能出现问题。

    所以对单表单工作空间要注意使用

    e

  • 相关阅读:
    Python测试框架:pytest
    用Python unittest搭建自动化测试框架
    unittest单元测试框架
    golang获取本地dns服务器
    Go语言HTTP请求头小写问题
    MAC上使用nginx搭建直播服务器
    go packages 学习
    Cloud Native Computing Foundation
    普通文件I/O需要两次复制,内存映射文件mmap一次复制
    page cache & buffer cache
  • 原文地址:https://www.cnblogs.com/crazylqy/p/5983507.html
Copyright © 2020-2023  润新知