redis做mysql前端数据代理的可能性(全数据缓存)
题目可能描述不清晰,也不是需求驱动,全是我自己yy的,一些名字也是我臆想的,见谅
我的想法是mysql读操作就是正常的缓存逻辑,而mysql的写操作也写到redis,在空闲的时候再同步到mysql,这样web服务的数据操作全部打到redis上,应该可以扛住更大流量
对mysql可以读写分离,redis做读缓存,然后写操作通过消息队列减轻写操作的压力。这种方法可能有实时问题,不知对不对。
以上只是开脑洞,还望大神能指教可行性和实现是否有意义
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我在我的项目中用到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。
思路就是这样。
数据不变就可简单的代理,如果数据还要修改,删除呢 比如发个帖发完了觉得不对,要修改,或者要删除, 你在修改/删除的时候是修改redis还是修改mysql呢 这时候个要判断你的数据是已经同步到mysql还是没同步在redis,增加了额外的复杂性
题主问题是这样的 ,你写操作到redis 那么业务逻辑控制的数据是拿mysql控制还是redis呢 拿redis吧它是缓存数据实时性不高、 而且会有问题 就是你后期写入的数据还没到mysql还在redis中 、那么就会导致你的业务出问题、那么你还是得再去拿mysql 徒劳也!所以你的需求只是在实时要求不高的业务上,但是实时要求不高的你又是没必要走redis的 你的确可以直接走队列 抛到队列然后让队列去落地mysql为何不可。当然你说redis速度快 想用redis代替mysql也是可以的 不过运维成本就高了 毕竟redis做数据落地是要保证安全性和完整性的、 这个你得考虑。 所以redis应该是做热数据缓存的 冷数据还是老实点落到mysql吧。 这只是个人理解 不具权威啊 哈哈