首页 > redis做mysql前端数据代理的可能性(全数据缓存)

redis做mysql前端数据代理的可能性(全数据缓存)

题目可能描述不清晰,也不是需求驱动,全是我自己yy的,一些名字也是我臆想的,见谅

我的想法是mysql读操作就是正常的缓存逻辑,而mysql的写操作也写到redis,在空闲的时候再同步到mysql,这样web服务的数据操作全部打到redis上,应该可以扛住更大流量

对mysql可以读写分离,redis做读缓存,然后写操作通过消息队列减轻写操作的压力。这种方法可能有实时问题,不知对不对。

以上只是开脑洞,还望大神能指教可行性和实现是否有意义


题主问题是这样的 ,你写操作到redis 那么业务逻辑控制的数据是拿mysql控制还是redis呢 拿redis吧它是缓存数据实时性不高、 而且会有问题 就是你后期写入的数据还没到mysql还在redis中 、那么就会导致你的业务出问题、那么你还是得再去拿mysql 徒劳也!所以你的需求只是在实时要求不高的业务上,但是实时要求不高的你又是没必要走redis的 你的确可以直接走队列 抛到队列然后让队列去落地mysql为何不可。当然你说redis速度快 想用redis代替mysql也是可以的 不过运维成本就高了 毕竟redis做数据落地是要保证安全性和完整性的、 这个你得考虑。 所以redis应该是做热数据缓存的 冷数据还是老实点落到mysql吧。 这只是个人理解 不具权威啊 哈哈


数据不变就可简单的代理,如果数据还要修改,删除呢 比如发个帖发完了觉得不对,要修改,或者要删除, 你在修改/删除的时候是修改redis还是修改mysql呢 这时候个要判断你的数据是已经同步到mysql还是没同步在redis,增加了额外的复杂性


我在我的项目中用到counter updater

一个用计数,一个就是常规的update

redis中使用hash类型存储数据。

举例来说

mysql中有用户表user,用户资料表user_profile

redis中user使用hash类型,合并需要到的user user_profile字段,合并哪些字段需要根据自己的项目需求。

用到redis就要考虑缓存的维护。

我举个例子:更新用户最后登录时间

updater中有个方法更新redis中user中的last_login成员数据,同时插入updater的队列。

这样,redis缓存维护了,然后定时消费updater队列来更新mysql。

思路就是这样。

【热门文章】
【热门文章】