# 为什么选择单线程

官方文档

Redis 的操作是基于缓存的,所有 CPU 不太可能成为 Redis 的瓶颈,一般内存和网络才可能是。 所以 Redis 采用单线程设计。

Redis 官方性能测试

Redis 官方提供了针对 Redis 的基准测试,可以说 Redis 的运行性能是毋庸置疑的。

# 单线程优点

# 不需要锁的消耗

Redis 中有多种存储结构,有复杂的也有简单的,这些结构可能会进行细粒度的操作,多线程的运行可能就会存在线程安全的问题,需要通过锁来保证同步,增大性能开销。

但是在单线程的情况下就不需要考虑锁的问题,不存在加锁释放锁操作或者死锁导致的性能消耗。

# CPU 消耗

单线程可以避免不必要的上下文切换和竞争,也不存在多进程或者多线程导致的切换产生的CPU消耗。

# 单线程劣势

# 无法发挥多核CPU性能

Redis 是单线程运行所有无法发挥多核 CPU性能,不过可以通过部署多个 Redis 实例完善这个问题。

# Redis 快的因素

# 单线程

由于是单线程,所以没有锁的消耗和上下文切换的消耗。且其本身就是对内存的操作,本身速度就快。

# 数据结构设计

Redis 多种数据结构为了加快速度和节省空间做了很多的设计,比如:短数据使用 ziplist 既节省了空间,同时因为是开辟的一块连续的存储空间,读取速度也会快。如:有序集合结构,通过 skiplist 来提高数据的读取速度。

# IO 多路复用

通过 IO 多路复用的设计,提高 Redis 的吞吐能力。

精彩内容推送,请关注公众号!
最近更新时间: 4/28/2020, 9:12:18 PM