Redis puts all data in memory. When non-data synchronization works normally, there is no need to read data from disk, 0 IO times. The memory response time is about 100 nanoseconds, which is an important basis for the fast speed of Redis.
Mysql is a persistent storage, which is stored in the disk. Retrieval will involve a certain amount of IO. In order to solve this bottleneck, caches appeared, such as memcached, which is the most used now. (referred to as mc).
First, the user accesses mc. If it misses, access mysql. Then, like memory and hard disk, the data is copied to the redis part of mc. Both mc and mc are cached and run in memory, which greatly improves the access speed of web access with high data volume. (Recommended learning: Redis video tutorial)
However, mc only provides simple data structures, such as string storage; redis provides a large number of data structures, such as String, list, set, hashset, sorted set, etc., make it a lot more convenient for users. After all, they encapsulate a layer of practical functions and achieve the same effect. Of course, use redis and slowly abandon mc.
Redis is single-threaded. Simplifying the implementation of algorithms, the implementation of concurrent data structures is not only difficult but also troublesome to test. Second, a single thread avoids the consumption caused by thread switching and locking and releasing locks. For server-side development, locks and thread switching are usually performance killers. Of course, single threading will also have its shortcomings, which is also Redis's nightmare: blocking. If the execution of a command is too long, it will cause other commands to be blocked, which is very fatal for Redis, so Redis is a database for fast execution scenarios.
Redis uses epoll as the implementation of I/O multiplexing technology, and Redis's own event processing model converts epoll's read, write, close, etc. into events, not on network I/O Too much time wasted. Realize monitoring of multiple FD reads and writes to improve performance.
Mysql is used to store data persistently on the hard disk. It is powerful but slow.
Redis is used to store frequently used data in the cache and has fast reading speed.
For more Redis-related technical articles, please visit the Introduction Tutorial on Using Redis Database column to learn!
The above is the detailed content of Why redis is faster than mysql. For more information, please follow other related articles on the PHP Chinese website!