Redis provides a wealth of functions. You may feel dazzled when you first see them. What are these functions used for? What problems were solved? Under what circumstances will the corresponding function be used? Let’s start with a step-by-step explanation.
Cache based on local memory
In order to solve the problem that calling the API still takes 2 seconds, after investigation, the main reason Because it took nearly 2 seconds to use SQL to obtain hot news, so we thought of a simple and crude solution, which is to cache the results of the SQL query directly in the memory of the current api server (setting the cache to be valid time is 1 minute). Subsequent requests within 1 minute will directly read the cache, and it will no longer take 2 seconds to execute SQL. If this API receives 100 requests per second, then there are 6,000 requests per minute. That is, only the requests crowded in the first 2 seconds will take 2 seconds, and all requests in the subsequent 58 seconds can be responded to immediately. , without waiting another 2 seconds.
Redis on the server side
When the memory of the API server was filled with cache, we found that we had to think of another solution. The most straightforward idea is to put all these caches on a dedicated server and configure its memory to be large. Then we focused on redis. . . As for how to configure and deploy redis, I won’t explain it here. Redis official has a detailed introduction. Then we used a separate server as the Redis server, and the memory pressure of the API server was solved.
Persistence
A single Redis server will always be in a bad mood for a few days a month. If the mood is bad, it will go on strike, resulting in all caches All are lost (redis data is stored in memory). Although the Redis server can be brought back online, the memory data loss caused a cache avalanche, and the pressure on the API server and database suddenly increased. So at this time, the persistence function of Redis comes in handy, which can alleviate the impact of cache avalanche. The persistence of redis means that redis will write the data in the memory to the hard disk and load the data when redis restarts, thus minimizing the impact of cache loss.
Sentinel and Replication
The Redis server's strike without warning is a troublesome thing. So what to do? The answer is: Back up one machine and hang it up. So how do you know that a certain redis server is down, how to switch, and how to ensure that the backup machine is a complete backup of the original server? At this time, Sentinel and Replication need to appear. Sentinel can manage multiple Redis servers, and it provides monitoring, reminders and automatic failover functions; Replication is responsible for allowing a Redis server to be equipped with multiple backup servers. Redis also uses these two functions to ensure the high availability of Redis. In addition, the Sentinel function is a use of Redis's publishing and subscription functions.
Cluster
There is always an upper limit on the resources of a single server. We can separate read and write CPU resources and IO resources through master-slave replication. Transfer part of the CPU and IO pressure to the slave server. But what to do with memory resources? The master-slave mode only backs up the same data and cannot expand the memory horizontally. The memory of a single machine can only be increased, but there is always an upper limit. So we need a solution that allows us to scale horizontally. The ultimate goal is to make each server only responsible for a part of it, so that all these servers form a whole. To external consumers, this group of distributed servers is like a centralized server
The above is the detailed content of What functions does redis have?. For more information, please follow other related articles on the PHP Chinese website!