java吧 关注:1,247,186贴子:12,724,709
  • 8回复贴,共1

ssm整合redis数据问题,求大佬指点

只看楼主收藏回复

我想问的是整合后第一次select会存到redis中去,第二次可以在redis中查询,然后一个update就把我redis中的所有内容全部clear了,这是正常的吗


IP属地:上海1楼2019-02-18 13:42回复
    跪求大佬帮忙


    IP属地:上海2楼2019-02-18 13:43
    回复
      大佬呢


      IP属地:上海3楼2019-02-18 13:46
      回复
        跪求大佬了


        IP属地:上海4楼2019-02-18 14:25
        回复
          1


          IP属地:上海5楼2019-02-18 14:40
          回复
            跟别人学什么java呢,明天来我富士康报道


            来自Android客户端6楼2019-02-18 14:42
            回复
              mybatis二级缓存是以mapper的namespace为单位的,同个namespace下发生修改,都会触发缓存清除。使用mybatis自带的缓存实现的话,默认是删除namespace下的缓存,但是如果使用redis作为缓存的话,实现类没写好的话,会把所有的缓存都清除掉。
              1.使用默认实现的话,那就是用map缓存了,每个mapper都会创建一个Cache对象,然后刷新缓存时会调用对应的clear方法,将整个map清空,因为是一个mapper一个map,所以这时候清空的是当前mapper的缓存。
              2.使用redis的话,假设客户端是jedis,如果直接调用flush()的话,那肯定就是删除全部缓存了,redis又不知道你数据是按mapper区分的。所以正确做法是,在putObject的时候,记录下缓存的key,在clear的时候,取出这些key,删除,而不是调用jedis的flush。


              IP属地:广东本楼含有高级字体7楼2019-02-18 15:04
              回复
                做的是dao层的缓存还是service的啊


                IP属地:浙江来自Android客户端9楼2019-02-18 15:33
                回复
                  等死吧


                  来自Android客户端10楼2019-02-18 16:18
                  回复