Redis的单线程和高性能

35 阅读1分钟

问题

Redis是单线程吗?

Redis的单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的,但Redis其他功能,比如持久化,异步删除、集群数据同步等,是由额外线程执行的。

Redis是单线程为什么还这么快?

它所有数据都存储在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。在一些指令中,要尽量避免keys,大key。

Redis单线程如何处理那么多的并发客户端连接?

Redis的IO多路复用:redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分排器将事件分发给事件处理器。

image.png 查看Redis支持最大连接数,在redis.conf文件中可修改,# maxclients 10000(默认)

其他高级命令

keys:全量遍历键

列出所有满足特定字符串规则的key,当redis数量比较大时,性能比较差,要避免使用。

scan:渐进式遍历键

image.png