candy_rainbow
candy_rainbow
采纳率11.1%
2017-07-05 07:48 浏览 857

请教各位一个问题,不是什么代码问题,就是一个关于Redis的概念

我学了一段时间的Redis,主从复制、哨兵模式、集群什么的也都玩过了,知识对于缓存这个概念我太模糊了,就是缓存服务器,什么是缓存服务器呢,就是缓存是如何镶嵌子程序里面的呢?我前两天用Redis做了Mybatis的二级缓存,实现cache接口的过程我感觉就是 在读取一个数据的时候我存入Redis里面,然后下次取得时候我看Redis里面有没有。那对于缓存服务器这个东东是不是也是这个道理呢,况且Mybatis已经封装好了步骤,我要是自己写一个Redis缓存那么我每次操作数据的时候都要先操作Redis,那代码会异常的乱啊,而且这么做也不太现实啊,请问哪位老哥闲暇之际给我答疑解惑,也问一下有没有这样的demo,我对Redis比较感兴趣。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答 默认 最新

  • wu_0916 竖心旁的情 2017-07-05 08:52

    虽然多了一个步骤,但去数据的速度快了好多啊,特别是数据成千上万的时候。我是这么理解的~~

    点赞 评论 复制链接分享
  • candy_rainbow candy_rainbow 2017-07-05 09:22

    还有一点是,我在测试的时候,获取Redis实例的速度太慢了,我做了一个文章访问量的Demo,不可能做到瞬时更新、获取数据,可能是我电脑的问题

    点赞 评论 复制链接分享
  • candy_rainbow candy_rainbow 2017-07-05 13:17

    有人吗,各位大神下班了没?

    点赞 评论 复制链接分享
  • tianyaleixiaowu 天涯泪小武 2017-07-06 06:29

    其实你担心的问题在于取数据时操作redis和操作db写在一起很乱,代码量高了,然后还有读取数据脏数据的问题。
    不想写一起是对的,redis的逻辑是应该和db的分开来写的,最终效果应该是db的和redis各自有增删改查,甚至于一方挂掉了,另一方还能正常工作。
    你可以参照这个目标去实现它,采用aop的方式,在db的service上写切面,譬如db的query前先去redis 的query,查到值后就不执行db的。修改也一样,修改db成功后再去同步到redis。

    至于数据一致性,你可以采用捕捉异常去处理,或者跑定时任务去同步数据。

    点赞 评论 复制链接分享
  • candy_rainbow candy_rainbow 2017-07-07 01:40

    多谢你的回答,也就是说我需要在service上加一个前置增强被,然后判断它的操作方法,要是读取就查询缓存,然后在做操作,如果是修改则加一个后置增强更新缓存,

    点赞 评论 复制链接分享

相关推荐