您当前的位置: 首页 >  redis

wu@55555

暂无认证

  • 2浏览

    0关注

    201博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

redis为什么使用单线程?有什么好处?

wu@55555 发布时间:2021-06-29 23:53:30 ,浏览量:2

redis为什么使用单线程

redis本身是基于内存的,所以redis的性能瓶颈更多的是在于内存和网络带宽,而不是CPU。而单线程的实现更加简单和经济

采用单线程,可以使指令串行,不用额外维护锁机制,避免了不必要的上下文切换和竞争条件,减少了CPU的消耗

redis单线程是如何承担大量并发请求的?

首先redis可以承担Redis读的速度是110000次/s,写的速度是81000次/s ,也就是说redis的qps大概在10W量级上,这个量是很大的,那么redis是如何做到能够这么快的呢?

1、基于内存

redis的数据都是存储在内存中的,所有读写速度很快

2、单线程,不用维护锁机制

redis采用单线程机制,指令串行,不用维护额外的锁机制,资源竞争等

3、数据结构简单,操作简单

自己内部实现了各种数据结构,根据情况进行了优化 (1)动态字符串结构 (2)hash的字典结构的容量大小取2^N,使取模运算可以转换为按位运算,更快。同时扩容缩容采用采用渐进式rehash (3)zset采用跳表结构,范围查询更快 (4)list采用压缩链表结构,内存空间连续

4、采用了epoll多路复用器

能够接收大量socket连接,并且监控,能将有效socket传给内核执行后续读写操作

redis的VM机制

之前有看到不少博客都将redis的VM机制纳入redis快的原因之一,VM的操作是内存满了将冷数据保存到磁盘,之前了解到redis的淘汰策略是内存满了将冷数据删除,于是不禁产生这两个不是矛盾吗的疑问,进一步查询资料后发现VM机制在redis2.4的时候就已经弃用了,在redis2.6的时候删除了。使用VM反而存在性能问题,可能导致redis卡死,所以被弃用了。因此个人觉得VM机制不应该再作为redis快的原因

如果请求量大于10W的时候怎么办?

这时就要建立redis集群了,涉及到读写分离,主从同步,哨兵监控健康状态的知识点,详细可参考下述连接的博文,这里不再做累叙r

如果想了解更多关于redis的工作原理、底层数据结构、分布式锁、双写一致性、缓存穿透击穿雪崩等问题可以查看我的另外一篇博客:https://blog.csdn.net/qq_24950043/article/details/118316094

关注
打赏
1664985904
查看更多评论
立即登录/注册

微信扫码登录

0.0374s