Redis的单线程和高性能
Redis是单线程吗?
Redis 的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外 提供键值存储服务的主要流程。
Redis 的多线程部分,比如持久化、异步删除、集群数据同步等,其 实是由额外的线程执行的。
Redis 单线程为什么还能这么快?
由于 Redis 的所有数据均存于内存之中,其所有运算也都是内存级别的操作。同时,Redis 是单线程的,这避免了多线程切换带来的性能损耗问题。但也正因为 Redis 是单线程,在使用 Redis 指令时需格外小心。对于那些较为耗时的指令(例如 keys),务必谨慎使用,否则很容易导致 Redis 出现卡顿现象。
Redis 单线程如何处理那么多的并发客户端连接?
Redis的IO多路复用:redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处理器。
# 查看redis支持的最大连接数,在redis.conf文件中可修改,
# maxclients 10000 2 127.0.0.1:6379> CONFIG GET maxclients ##1) "maxclients" ##2) "10000"