redis延迟队列使用zset有序列表来实现 对于如加锁失败的线程 如果一直轮询会消耗资源 但如果使用sleep那么遇到死锁时就会彻底瘫痪 所以会使用延迟队列。当获取锁失败 会把消息序列序列化为字符串作为zset的value 把时间戳作为score (如time()+5 )多个线程对延迟队列进行轮询:lua脚本(网络往返从两次变为一次 并且多线程情况下因为lua原子性不会出现多个线程查询但只有一个线程能执行的现象) 每次zrangebyscore取出范围为0到当前时间戳的第一个value 然后zrem删除(抢到了) 之后处理业务逻辑。消息队列:可以使用redis 的list作为消息队列 生产者...