redis是单线程吗?

想问下多个请求到redis会发生并发问题吗?比如秒杀系统中多个用户的请求到redis去预减库存会发生超卖问题(库存减到-1)吗?我之前一直认为redis是单线程,多个请求到redis会像队列一样排队,所以不会发生并发问题,不知道对不对,希望大佬帮帮忙解答下,谢谢啦
全部评论
是单线程的,而且redis可以保证decr操作是原子性的,关键你redis只是个nosql数据库,真正对库存数量做判断不是在redis里吧,个人见解
点赞 回复 分享
发布于 2019-08-04 17:26
redis是单线程的,内部有一个命令队列,来的命令会排队执行,而且redis用的是IO复用模型,就是epoll之类的,,可以同时监听多个socket
点赞 回复 分享
发布于 2019-08-04 17:19
单个命令是原子性的,先读后写可能会导致更新丢失
点赞 回复 分享
发布于 2019-08-04 18:12
比如,你两个线程AB同时执行对redis的加一操作,因为操作不是原子性的,就分三步执行,取值,加一,赋值,,,总共有6个操作,在redis中单线程执行,比如:A先执行了取值,B执行了取值,A加一,A赋值,B加一,B赋值,最终结果不是3,而是2。redis也是单线程执行的,一次只执行了一个请求。我的理解。
点赞 回复 分享
发布于 2019-08-04 17:48
对啊,可以写个lua脚本,如果库存》0,则减一,脚本内redis是原子执行
点赞 回复 分享
发布于 2019-08-04 17:21
是单线程,但是客户端发送两个请求之间会被其他客户端打断
点赞 回复 分享
发布于 2019-08-04 17:21

相关推荐

点赞 评论 收藏
分享
03-13 09:22
已编辑
东莞理工学院 Java
📍面试公司:微派🕐面试时间:03/09💻面试岗位:安卓开发一面❓面试问题:1. 自我介绍,为什么投安卓而不是后端?2. 最近一段实习做了什么业务?遇到最大的困难是什么?怎么解决的?3. 礼物抽奖、奖池模块的完整请求链路是什么?4. 令牌池是什么?0和1分别代表什么?5. 高并发下如何保证抽奖概率稳定?6. 为什么用 Redis List 做抽奖?解决了什么问题?7. Lua 脚本在抽奖中作用是什么?为什么保证原子性?8. 高并发下如何避免令牌重复消费?9. 请求超时、服务异常怎么降级、兜底?10. 风控怎么做?业务兜底、用户兜底、熔断策略是什么?11. 安卓做过什么功能?具体场景、用到哪些技术?12. Glide 图片加载原理,多级缓存、LRU、懒加载怎么实现?13. LRU 算法原理,用什么数据结构实现?为什么用 LinkedHashMap?14. HashMap 底层结构?链表转红黑树条件?为什么要用红黑树?15. HashMap 扩容机制?负载因子作用?16. Java 并发三大问题:原子性、可见性、有序性怎么解决?17. volatile 作用、原理、使用场景?18. synchronized 底层原理?MarkWord、WaitSet、EntryList 作用?19. sleep 和 wait 区别?20. 什么是死锁?怎么写代码模拟死锁?21. 线程池执行流程?核心线程、队列、最大线程、拒绝策略?22. 安卓多线程、协程用过吗?挂起函数怎么理解?23. AIDL 了解吗?多进程通信怎么做?24. C/C++ 掌握程度?25. 网络优化做过哪些?序列化、连接池、IO 模型?26. Ping 原理?ICMP 协议作用?数据包的结构?27. MCP 广场是什么?业务价值、怎么封装、怎么调用?28. RAG 个人知识库怎么做的?向量检索、BM25、多路召回?(叫我现场打开cursor看看怎么使用ai开发的)29. 算法题:买卖股票的最佳时机(只能买卖一次和买卖多次)。30. 对公司业务、面试轮次有什么想问的?🙌面试感想:这次面试感觉面试官非常非常细节,在我说完我的实习项目之后,他觉得我说的太快了听不懂,叫我一个个拆解,把对应的流程功能点遇到了什么问题分点详细的跟他说,并且没听明白就会再问一遍,一定要懂了才会到下一个点,对于部分的技术实现也是刨根问底,问完了对应的一个技术之后还会问相应的底层实现和使用的数据结构,整体感觉这次面试的难度也是比较困难的,但是面试官感觉人挺好的技术也非常在线,学习到了很多东西,一面过,明天更新二面
查看29道真题和解析
点赞 评论 收藏
分享
评论
2
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务