为了账号安全,请及时绑定邮箱和手机立即绑定

关于redis回滚的问题

看了这个redis的视频,有一点困惑,就是在数据库插入失败时候的回滚机制,视频中采用rPush的方式,将$uid重新插入到redis的末尾,这里不应该是lPush吗?因为是从redis的左侧取出数据的,按道理应该也是左侧插入回数据吧?希望懂的同学解答一下,谢谢!

正在回答

3 回答

我也这么想的,肯定是他写错了,口里说的插入左边,写的RPUSH插入右边。。。

0 回复 有任何疑惑可以回复我~
#1

慕斯1122527 提问者

非常感谢!
2018-05-31 回复 有任何疑惑可以回复我~

作者的队列是从右边插入左边取出,如果从左边取出的数据插入数据库失败,再从左侧插入,那么下次再取的又是这个数据,如果上次插入是由于数据本身导致的失败,那么下次的插入还是失败,这样就导致在左侧取一个有问题的数据又从左侧放回去一直循环下去,那么队列后头的数据没法读取处理了,在操作系统中这种情况也叫活锁

0 回复 有任何疑惑可以回复我~
#1

慕斯1122527 提问者

有点意思,膜拜。
2018-10-15 回复 有任何疑惑可以回复我~
#2

qq_郝_0

那如果插入到右边后,最终还是要执行到这个之前插入失败的那组数据,依然会有问题啊
2018-12-13 回复 有任何疑惑可以回复我~
#3

qq_郝_0

这里的插入失败是指mysql执行失败,但数据不会有问题的。你设想,数据有问题插入不了,会返回报错信息的,这个时候是不是应该去try catch去捕获异常然后进行处理
2018-12-13 回复 有任何疑惑可以回复我~

到底是讲错了 还是插错了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP消息队列实现及应用
  • 参与学习       32677    人
  • 解答问题       58    个

消息队列是个什么玩意儿,使用队列解决秒杀等实际问题概念和使用方法

进入课程

关于redis回滚的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信