我学了一段时间的Redis,主从复制、哨兵模式、集群什么的也都玩过了,知识对于缓存这个概念我太模糊了,就是缓存服务器,什么是缓存服务器呢,就是缓存是如何镶嵌子程序里面的呢?我前两天用Redis做了Mybatis的二级缓存,实现cache接口的过程我感觉就是 在读取一个数据的时候我存入Redis里面,然后下次取得时候我看Redis里面有没有。那对于缓存服务器这个东东是不是也是这个道理呢,况且Mybatis已经封装好了步骤,我要是自己写一个Redis缓存那么我每次操作数据的时候都要先操作Redis,那代码会异常的乱啊,而且这么做也不太现实啊,请问哪位老哥闲暇之际给我答疑解惑,也问一下有没有这样的demo,我对Redis比较感兴趣。
其实你担心的问题在于取数据时操作redis和操作db写在一起很乱,代码量高了,然后还有读取数据脏数据的问题。
不想写一起是对的,redis的逻辑是应该和db的分开来写的,最终效果应该是db的和redis各自有增删改查,甚至于一方挂掉了,另一方还能正常工作。
你可以参照这个目标去实现它,采用aop的方式,在db的service上写切面,譬如db的query前先去redis 的query,查到值后就不执行db的。修改也一样,修改db成功后再去同步到redis。
至于数据一致性,你可以采用捕捉异常去处理,或者跑定时任务去同步数据。
虽然多了一个步骤,但去数据的速度快了好多啊,特别是数据成千上万的时候。我是这么理解的~~
还有一点是,我在测试的时候,获取Redis实例的速度太慢了,我做了一个文章访问量的Demo,不可能做到瞬时更新、获取数据,可能是我电脑的问题
有人吗,各位大神下班了没?
多谢你的回答,也就是说我需要在service上加一个前置增强被,然后判断它的操作方法,要是读取就查询缓存,然后在做操作,如果是修改则加一个后置增强更新缓存,