Redis默认线程数量为何如此设计(redis默认线程数量)
Redis是一个基于内存、支持数据持久化的开源键值对存储数据库。它速度快,广泛应用于缓存、消息队列服务,其中之一原因就是它的默认线程数量被设计得很低,占用内存最少达到节省资源之用。
Redis主要由两种类型的线程构成:IO线程、工作线程。Redis会用IO线程处理网络连接、读写事件,执行与客户端的交互;而工作线程会执行用户的具体请求等Redis内部操作,例如创建、初始化封装数据结构,定时任务等。
Redis默认线程数量是8个,其中IO线程数为1个,工作线程数7个;相比其他数据库,Redis线程数量确实较低。主要原因是:Redis基于内存的读写速度一般比从磁盘或者网络获取数据的速度快许多;且Redis工作线程有比较严格的调度机制,新任务通常不会太多,所以其设置的线程数可得到最大的性能收益。
同时,利用默认的线程数可以避免一些常见错误,比如创建过多的线程耗尽操作系统的资源,导致系统挂掉;或者设置线程数太少,无法发挥最优性能。
为此,Redis默认设置了线程数,一般情况下不建议改动,但如果有特殊要求,可通过在redis.conf文件中修改:
设置IO(也就是设置的服务的线程数):
io-threads
设置工作线程:
worker-threads
为了实现高效的服务,Redis设置了有限的线程数量,但是,用户可以根据实际情况,适当调整线程数,达到最优的性能收益。