美文网首页分布式服务
redis单线程为什么这么快?

redis单线程为什么这么快?

作者: M_lear | 来源:发表于2022-02-19 11:03 被阅读0次

    redis单线程为什么这么快?

    快的原因:

    1. 首先redis不是完全单线程的,一些耗时操作也会异步去处理,比如持久化相关的工作(RDB和AOF重写)。
    2. 是基于内存操作的。
    3. 基于IO多路复用,不在网络IO上浪费时间。

    单线程的原因:

    1. redis的瓶颈在内存大小或网络带宽上,而不在cpu上。
    2. 单线程可以避免线程上下文切换和锁争用。

    其他

    RDB:持久化某个时间点的数据快照。
    实现:通过fork一个子进程来完成。
    fork使用了“写时复制”(COW)技术,fork后,父子进程使用不同的虚拟内存空间,但用的是相同的物理内存空间。只有当父子进程中有更改相应段的行为发生时,再为子进程相应的段分配物理空间。

    AOF:追加写操作。
    缺点:AOF文件大。

    所以有AOF后台重写。
    也是通过fork子进程来完成。
    把数据快照转化成一个个写操作。


    redis过期策略:
    定期删除+惰性删除

    定期删除:【在过期字典里】,定期随机检查一部分key。

    内存淘汰策略:
    采样一定数量的key,然后LRU。

    相关文章

      网友评论

        本文标题:redis单线程为什么这么快?

        本文链接:https://www.haomeiwen.com/subject/puoulrtx.html