GoBiOlderWang 2017-08-11 02:59 采纳率: 0%
浏览 2447

关于多表联查的缓存问题,使用什么样的技术可以解决?

最近在做一个后台的权限管理系统,使用了shiro来进行权限的空值,所以每次登陆的时候都会到数据库里查找当前用户所对应的角色和权限,每次都要通过从账号到用户,到角色,到权限的查询,中间还有两张关联表,所以很耗费时间
上面要求让我做一个缓存,将查询结果缓存起来,同时要做到每个角色或者用户的更改缓存中的数据也需要清除或更改
首先我想的是mybatis的二级缓存应该是不能用,每个缓存是以namespace为单位的,用户表,角色表,角色用户关联表,无论我把sql写在那个namespace下,另一张表中数据的更改并不会影响的这边,所以会出现数据错误的情况...后来上边给了我一个文档,是spring和ehcache结合的使用,我查看了之后发现他们其实有着相同的地方,他是利用了aop的思想,在执行查询方法的时候查询是否有缓存,如果没有就利用反射的原理将该方法的全名做为cache的键,将查询结果作为值保存在cache中;然后在执行增删改的时候也是利用反射的原理获取该方法的所在的类,然后清除缓存中所有以该类名开头的缓存..这样也就是说我在用户的service下执行了角色的查询,那么我只有在操作该类下的增删改方法的时候才能清除缓存,然而我如果对角色进行了更改完全不会影响到这边的缓存操作。。除非我将用户角色所有的方法全部放在一个server下,不然缓存是会出现错误的
希望有朋友帮我解决这个问题,我是新手,也不了解redis,不知道能否解决这样的问题?求帮助。。
  • 写回答

1条回答

  • 天涯泪小武 博客专家认证 2017-08-11 03:16
    关注

    你的方法不太对,shiro本身提供的就有缓存的接口,你需要做一个自己的缓存类去实现这个接口。并不是spring与ehcache那些,那些是配置普通的缓存的,用于shiro麻烦。
    http://blog.csdn.net/csujiangyu/article/details/49076531
    http://sishuok.com/forum/blogPost/list/7461.html
    你百度搜搜 shiro缓存,多的很

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器