Cache, used by many websites, especially when dealing with high concurrency, caching is essential. This article is based on phalapi to explain the actual use of cached Redis. I hope it will be helpful to everyone.
Preface
When we are developing a project, we may encounter many problems, such as message push, sending emails, sending text messages, and concurrency failure. At this time, it is time to turn Let’s go to the commonly used cache to save us. Next, let’s talk about the actual use of cached Redis to solve practical problems. Here is the basic knowledge based on redis, and a brief look at the redis expansion document of PhalApi. Come and read this Section.
#1. What problems can be solved
When we use a technology, of course we use it to solve problems. So what specific problems can we use caching technology Redis to solve?
1.1 Caching result set
Here is an example and you will understand what caching result set means after looking at it
//从缓存redis的clubcache库中查询club表where条件是city,city值是$city $cache = DI()->redis->get_Time('club'.'city'.$city,'clubcache'); //如果查询到了就直接返回缓存的结果 if($cache){ return $cache; } //如果不存在从数据库里面获取结果然后存入redis缓存key的条件和取值时一样,最后一个参数为过期时间 $rs = $this->getORM()->select('*')->where('city',$city)->fetchAll(); DI()->redis->set_Time('club'.'city'.$city,$rs,'clubcache',600);
What we do above is to save the results for 600 seconds. Querying again within 600 seconds will get the same results
1.2 Queue processing
There is a key point in the application of Redis to time. The function is its queue
Let’s first go through a few special redis functions
//写入队列左边 set_lPush //写入队列左边 如果value已经存在,则不添加 set_lPushx //写入队列右边 set_rPush //写入队列右边 如果value已经存在,则不添加 set_rPushx //读取队列左边 get_lPop //读取队列右边 get_rPop //读取队列左边 如果没有读取到阻塞一定时间 get_blPop //读取队列右边 如果没有读取到阻塞一定时间 get_brPop
For example, when we are doing business such as message push, sending emails, and sending text messages, we need to request the first For third-party interfaces, the request speed is determined by the third party. For example, a push interface on WeChat is 200ms. If it is put into our API business, a huge problem will arise. User access speed will drop extremely. The solution to this kind of problem is The queue process is as follows
When we receive a push request from the user
↓
Add the push request to the queue API without performing any operation (such as adding it to the left)
↓
(Reading the right side is backward and out, if you read the left, you are advanced first)
↓
Then execute the push logic of the response
Generally our script is an infinite loop, or the shell makes a scheduled request. We will use blocking when the data cannot be read to solve the problem of too fast loops where the value cannot be reached. Question
1.3 Temporary data storage
Temporary data does not require too much explanation, just an example is enough
For example, when we obtain the verification code, we need to Is the verification code stored in the database? I think it is not necessary, and the database is not easy to perform expiration operations. We can only judge by ourselves
Then we use redis to store the verification code into redis and then give an expiration time. This solves this problem very well
1.4 Database
Using redis as a database is a relatively in-depth use. Here are some thoughts
After everyone, the service can be distributed , but it is not easy to distribute most databases, so many systems are spliced and piled up in the database. Of course, you can use cache to store the result set, but this solution is convenient for treating the symptoms rather than the root cause. When discussing with children's shoes, I got A convenient solution is to use redis as the first database and mysql as the metadata database.
After doing this operation, the server will automatically synchronize the hot data to redis and store the cold data in mysql. When the cold data is used, After the data is stored in redis, most of the user's operations are basically operations based on redis
The cost of this implementation is relatively high. It requires a lot of energy to implement redis data synchronization encapsulation, use where queries, etc. Do, in the later stage I plan to make a general extension
#2. Standardized use
In fact, the above categories have been almost covered, why still I have to take out a separate paragraph to talk about the specifications, because the cache is not like a database. When you need to check the cache, if all the data is accumulated in a redis library, you will be very painful.
But Redis supports multiple libraries, so it needs a set of specifications to divide them. Here I will share how I use
0~10 libraries as normal business libraries, that is, push queues and temporary data. Each library only Store data for a business. For example, WeChat push data exists in 5 libraries, and email push data exists in 6 libraries. Temporary data for sending verification codes is stored in 3 libraries, and so on. If you feel that 10 libraries are not enough, you can use it according to the business Add
10 or more libraries as cache libraries to store the result set data of each table, or other data
The naming convention of all keys must contain type + table name + condition
Related recommendations:
php file cache class usage example analysis
Analysis on Redis cluster failure
The above is the detailed content of phalapi-caching usage and redis expansion. For more information, please follow other related articles on the PHP Chinese website!

The article discusses PHP, detailing its full form, main uses in web development, comparison with Python and Java, and its ease of learning for beginners.

PHP's case sensitivity varies: functions are insensitive, while variables and classes are sensitive. Best practices include consistent naming and using case-insensitive functions for comparisons.

The article discusses various methods for page redirection in PHP, focusing on the header() function and addressing common issues like "headers already sent" errors.

The article discusses PHP Data Objects (PDO), an extension for database access in PHP. It highlights PDO's role in enhancing security through prepared statements and its benefits over MySQLi, including database abstraction and better error handling.

Memcache and Memcached are PHP caching systems that speed up web apps by reducing database load. A single instance can be shared among projects with careful key management.

Article discusses steps to create and manage MySQL databases using PHP, focusing on connection, creation, common errors, and security measures.

The article discusses how JavaScript and PHP interact indirectly through HTTP requests due to their different environments. It covers methods for sending data from JavaScript to PHP and highlights security considerations like data validation and prot

The article discusses executing PHP scripts from the command line, including steps, common options, troubleshooting errors, and security considerations.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Dreamweaver CS6
Visual web development tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Atom editor mac version download
The most popular open source editor
