微服务架构-5-Redis实战-1-Redis为什么单线程能够支持高并发

1 Redis的应用场景有那些

  1. Token令牌的生成
  2. 短信验证码Code
  3. 缓存查询数据,减轻数据库访问压力
  4. 帮助实现计数器
  5. 分布式锁 延迟操作 秒杀抢购 订单超时:30分钟内取消订单 库存+1
  6. 分布式消息中间件(发布订阅)

2 Redis线程模型IO多路复用

Redis官方没有windows版本redis,只有linux版本的reids。
Redis的底层是采用nio的多路io复用机制对多个不同的连接(tcp)实现io的复用,能够非常好的支持高并发,同时能够先天性保证线程安全的问题。
多路io复用:使用一个线程维护多个不同的io操作。
原理:使用nio的选择器,将多个不同的Channel统一交给Selector(选择器)管理。

但是nio的实现在不同的操作系统上存在差别:在windows操作系统上使用select实现轮询机制、在linux操作系统使用epoll。(windows操作系统是没有epoll)
在windows操作系统中使用select实现轮询机制时间复杂度为o(n),而且会存在空轮询的情况,效率非常低;其次默认对轮询有一定限制(默认1024),所以这样的话很难支持上万tcp连接。
linux操作系统采用epoll实现事件驱动回调形式通知,不会存在空轮询的情况,只是对活跃的socket实现主动回调,时间复杂度为是o(1),性能有很大的提升。
注意:windows操作系统没有epoll、只有linux操作系统有。
所以为什么Nginx、redis能够支持非常高的并发?最终都是靠的linux版本的io多路复用机制(epoll)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值