-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
补充 #25
Comments
Redis 是单线程吗? Redis 单线程指的是「接收客户端请求->解析请求 ->进行数据读写等操作->发生数据给客户端」这个过程是由一个线程(主线程)来完成的 但是,Redis 程序并不是单线程的,Redis 在启动的时候,是会启动后台线程(BIO)的: Redis 在 2.6 版本,会启动 2 个后台线程,分别处理关闭文件、AOF 刷盘这两个任务; 图片图片 关闭文件、AOF 刷盘、释放内存这三个任务都有各自的任务队列: BIO_CLOSE_FILE,关闭文件任务队列:当队列有任务后,后台线程会调用 close(fd) ,将文件关闭; |
Redis 采用单线程为什么还这么快? Redis 的大部分操作都在内存中完成,并且采用了高效的数据结构,因此 Redis 瓶颈可能是机器的内存或者网络带宽,而并非 CPU,既然 CPU 不是瓶颈,那么自然就采用单线程的解决方案了; |
Redis 6.0 之后为什么引入了多线程? 虽然 Redis 的主要工作(网络 I/O 和执行命令)一直是单线程模型,但是在 Redis 6.0 版本之后,也采用了多个 I/O 线程来处理网络请求,这是因为随着网络硬件的性能提升,Redis 的性能瓶颈有时会出现在网络 I/O 的处理上。 所以为了提高网络请求处理的并行度,Redis 6.0 对于网络请求采用多线程来处理。但是对于读写命令,Redis 仍然使用单线程来处理,所以大家不要误解 Redis 有多线程同时执行命令。 Redis 官方表示,Redis 6.0 版本引入的多线程 I/O 特性对性能提升至少是一倍以上。 |
redis进程模型,5.0前后区别
RDB、AOF实现原理
redis渐进式rehash原理
hashmap扩容过程
threadlocal原理
其他限流算法
https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/description/
The text was updated successfully, but these errors were encountered: