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

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

5个回答

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

candy_rainbow
candy_rainbow 那你的意思就是我只要是基本额数据库查询和添加操作都要先操作Redis了啊?道理其实应该是这样的,但是如果硬编码实现的话我感觉太不实际了,业务代码本来就复杂,这就相当于加了一个横切逻辑,而且我在想,缓存的数据如果想要保证与数据库同步,那么我每次修改、删除数据的时候就需要更新缓存数据(假如缓存中有的话),更新的过程又增加了负担,而且,我在修改缓存的时候有人查询缓存了,那么会造成读取的数据与缓存中、数据库中的数据不一致,这个问题会不会还涉及到事务呢。因为mybatis在写操作都会清空二级缓存
大约 3 年之前 回复

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

candy_rainbow
candy_rainbow @竖心旁的情
大约 3 年之前 回复
candy_rainbow
candy_rainbow @竖心旁的情
大约 3 年之前 回复

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

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

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

tianyaleixiaowu
天涯泪小武 回复candy_rainbow: 记得采纳
接近 3 年之前 回复
tianyaleixiaowu
天涯泪小武 回复candy_rainbow: 是这样的。大部分场景下,查询远多于修改,缓存的目的就是让查询更迅速。至于修改后数据的统一,实现方式有很多,后置增强也可,队列也可
接近 3 年之前 回复
candy_rainbow
candy_rainbow 多谢你的回答,也就是说我需要在service上加一个前置增强被,然后判断它的操作方法,要是读取就查询缓存,然后在做操作,如果是修改则加一个后置增强更新缓存,
接近 3 年之前 回复

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问