关于redis回滚的问题

来源:3-2 Redis队列秒杀实现

慕斯1122527

2018-05-30 14:30

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

写回答 关注

3回答

  • qq_欧尼酱_3
    2018-05-31 10:30:03
    已采纳

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

    慕斯1122...

    非常感谢!

    2018-05-31 11:18:31

    共 1 条回复 >

  • 翠竹凝梦
    2018-10-08 10:53:43

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

    qq_郝_0

    这里的插入失败是指mysql执行失败,但数据不会有问题的。你设想,数据有问题插入不了,会返回报错信息的,这个时候是不是应该去try catch去捕获异常然后进行处理

    2018-12-13 16:54:44

    共 3 条回复 >

  • 慕UI5486170
    2018-08-28 17:43:30

    到底是讲错了 还是插错了

PHP消息队列实现及应用

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

32730 学习 · 58 问题

查看课程

相似问题