


Scenarios for applying Redis Php in projects, project redisphp scenarios_PHP tutorial
Scenarios of applying Redis Php in projects, project redisphp scenarios
Foreword
In some cases, some students said why the string type cannot be used. The string type can be completely implemented
I suggest you read my column "Advanced Usage of Redis", which introduces the benefits of using hash type
Product dimension count
Count product likes, comments, appraisals, and views
Speaking of e-commerce, products are definitely inseparable, and the accompanying products have various counts (number of likes, number of comments, number of appraisals, number of views, etc.)
Redis commands are all atomic, and you can easily use INCR, DECR and other commands to count.
Use the Redis type: Hash. If you are not familiar with the redis data type, you can refer to
http://redis.io/topics/data-types-intro
Define a key product: for product, and define a hashkey for each value, such as like number like_num
$redis->hSet('product:123', 'like_num ', 5); // 添加 id为123的商品 like_num 为5 $redis->hIncrBy('product:123', 'like_num ', 1); // 添加 id为123的商品like_num +1 $redis->hGetAll('product:123'); // 获取id为123的商品相关信息 array('like_num '=> 1)
User dimension count
Count the number of user updates, number of followers, number of fans, number of liked products, number of posts, etc.
Both user dimension counting and product dimension counting use Hash. Define a key for User as user:
Define a hashkey for each value, such as the number of followers follow
$redis->hSet('user:100000', 'follow ', 5); // 添加uid为10000的用户follow 为5 $redis->hIncrBy('user:100000', 'follow ', 1); // 更新uid为10000的用户follow +1 $redis->hGetAll('user:100000'); // 获取uid为10000的用户 array('like_num '=> 1)
Storing social relationships
The default collection is sorted by increasing score
To find mutual friends between two people, you may only need to use the intersection command
$redis->zAdd('user:1000:follow', 1463557212, '1001'); #uid为1000用户关注uid为1001 , score值设定时间戳1463557212 $redis->zAdd('user:1000:follow', 1463557333, '1002'); $redis->zAdd('user:2000:follow', 1463577568, '1001'); $redis->zAdd('user:2000:follow', 1463896964, '1003'); #uid为2000用户关注1001和1003用户 , score值设定时间戳 $redis->zInter('com_fllow:1000:2000', array('user:1000:follow', 'user:2000:follow')); #对集合'user:1000:follow'和'user:2000:follow'取交集'com_fllow:1000:2000' #获得共同关注的uid $redis->zRange('com_fllow:1000:2000',0,-1); // 获取全部集合元素 #array('10001','10002')
Used as cache instead of memcached
Compared with memcached’s simple key-value storage, redis has numerous data structures (list, set, sorted set, hash,
etc)
NOTE: RPUSH pagewviews.user: EXPIRE pagewviews.user: 60 //Pay attention to update timeout
Anti-spam system
As an e-commerce website, it is inevitable to be attacked by various spam (spam comments, posting spam products, advertisements, brushing the ranking of your own products, etc.)
Develop a series of anti-spam rules for these spams, some of which can use redis for real-time analysis
For example: no more than 2 comments in 1 minute, less than 5 comments in 5 minutes, etc. (More mechanisms/rules need to be combined with drools)
Regular sorted set records user operations in the last day
(Why not record everything? To save memory, all operations will be recorded in the log, and Hadoop will be used for more comprehensive analysis and statistics in the future)
#获取5秒内操作记录 $res = $redis->zRangeByScore('user:1000:comment', time() - 5, time()); #判断5秒内不能评论 if (!$res) { $redis->zAdd('user:1000:comment', time(), '评论内容'); } else { echo '5秒之内不能评论'; } #5秒内评论不得超过2次 if($redis->zRangeByScore('user:1000:comment',time()-5 ,time())==1) echo '5秒之内不能评论2次'; #5秒内评论不得少于2次 if(count($redis->zRangeByScore('user:1000:comment',time()-5 ,time()))<2) echo '5秒之内不能评论2次';
User Timeline/Feeds
Redis is mainly used as cache here
$redis->zAdd('user:2000:feed:topic', time(), '13'); //score 为timestamp uid为2000的用户关注tid为13的topic $redis->expire('user:2000:feed:topic',24*60*60); #关注有效期为24小时 # ttl 30天之内按秒数计算 30天之外以timestamp为准
Latest List & Ranking
The latest list of products-sorted set structure presentation
$redis->zAdd('user:1000:product:like', time(), '3002'); $redis->zAdd('user:1000:product:like', time(), '3001'); $redis->zAdd('user:1000:product:like', time(), '3004'); $redis->zAdd('user:1000:product:like', time(), '3003'); $redis->zRange('user:1000:product:like', 0, -1,true); #默认喜欢时间升序序排列 # Array( [3002] => 1463565179 [3001] => 1463565189 [3004] => 1463565199 [3003] => 1463565209 ) $redis->zRevRange('user:1000:product:like', 0, -1,true); #以喜欢时间降序排列 # Array ( [3003] => 1463565424 [3004] => 1463565414 [3001] => 1463565404 [3002] => 1463565394 )Ranking list-list data structure presentation
$redis->lPush('user:1000:product:like', '3002'); $redis->lPush('user:1000:product:like', '3001'); $redis->lPush('user:1000:product:like', '3004'); $redis->lPush('user:1000:product:like', '3003'); $redis->lRange('user:1000:product:like', 0, -1); Array ( [0] => 3003 [1] => 3004 [2] => 3001 [3] => 3002 )
Message notification
$redis->hSet('user:1000:message:notice', 'system', 1); #设置1条未读系统消息 $redis->hIncrBy('user:1000:message:notice', 'system', 1); #未读系统消息+1 $redis->hSet('user:1000:message:notice', 'comment', 1); #设置1条未读评论 $redis->hIncrBy('user:1000:message:notice', 'comment', 1); #未读评论+1 $redis->hGetAll('user:1000:message:notice'); #查看所有消息通知数量 Array ( [system] => 2 [comment] => 2 )
Use Redis as a message queue

PHP is used to build dynamic websites, and its core functions include: 1. Generate dynamic content and generate web pages in real time by connecting with the database; 2. Process user interaction and form submissions, verify inputs and respond to operations; 3. Manage sessions and user authentication to provide a personalized experience; 4. Optimize performance and follow best practices to improve website efficiency and security.

PHP uses MySQLi and PDO extensions to interact in database operations and server-side logic processing, and processes server-side logic through functions such as session management. 1) Use MySQLi or PDO to connect to the database and execute SQL queries. 2) Handle HTTP requests and user status through session management and other functions. 3) Use transactions to ensure the atomicity of database operations. 4) Prevent SQL injection, use exception handling and closing connections for debugging. 5) Optimize performance through indexing and cache, write highly readable code and perform error handling.

Using preprocessing statements and PDO in PHP can effectively prevent SQL injection attacks. 1) Use PDO to connect to the database and set the error mode. 2) Create preprocessing statements through the prepare method and pass data using placeholders and execute methods. 3) Process query results and ensure the security and performance of the code.

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP makes it easy to create interactive web content. 1) Dynamically generate content by embedding HTML and display it in real time based on user input or database data. 2) Process form submission and generate dynamic output to ensure that htmlspecialchars is used to prevent XSS. 3) Use MySQL to create a user registration system, and use password_hash and preprocessing statements to enhance security. Mastering these techniques will improve the efficiency of web development.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.


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

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Chinese version
Chinese version, very easy to use

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.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version
Useful JavaScript development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment