1. Why is Redis single-threaded?
Because Redis is a memory-based operation, the CPU is not the bottleneck of Redis. The bottleneck of Redis is most likely the size of the machine memory or the network bandwidth. Since single-threading is easy to implement and the CPU will not become a bottleneck, it is logical to adopt a single-threaded solution.
2. Detailed reasons:
1. There is no need for performance consumption of various locks
The data structure of Redis is not all simple Key-Value, but also list. Complex structures such as hash may perform very fine-grained operations, such as adding an element after a long list, adding or deleting an object from the hash. These operations may require adding a lot of locks, resulting in a greatly increased synchronization overhead.
In short, in the case of a single thread, there is no need to consider various lock issues. There is no locking and releasing lock operations, and there is no performance consumption caused by possible deadlocks.
2. Single-threaded multi-process cluster solution
The power of single-thread is actually very powerful, and the efficiency of each core is also very high. Multi-threading can naturally have a higher performance limit than single-threading. , but in today's computing environment, even the upper limit of single-machine multi-threading often cannot meet the needs. What needs to be further explored is multi-server clustering solutions, in which multi-threading technology is still not available.
3. CPU consumption
Uses a single thread to avoid unnecessary context switching and competition conditions, and there is no CPU consumption due to switching caused by multi-process or multi-threading.
But what if the CPU becomes the bottleneck of Redis, or you don’t want other CPU cores of the server to be idle?
You can consider starting several more Redis processes. Redis is a key-value database, not a relational database, and there are no constraints between data. As long as the client distinguishes which keys are placed in which Redis process, it will be fine.
3. Advantages and Disadvantages of Redis Single Thread
1. Advantages of Single Process and Single Thread
The code is clearer and the processing logic is simpler
No need to think about it There are no lock and release operations for various lock problems, and there is no performance consumption caused by possible deadlocks
There is no CPU consumption due to switching caused by multi-processes or multi-threads
2. Disadvantages of single process and single thread
It cannot give full play to the performance of multi-core CPU, but it can be improved by opening multiple Redis instances on a single machine;
For more Redis related knowledge, please visit
Redis Use the tutorialThe above is the detailed content of Why is redis single-threaded?. For more information, please follow other related articles on the PHP Chinese website!