In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-09-24 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Internet Technology >
Share
Shulou(Shulou.com)06/02 Report--
Xiaobian to share with you how to use redis pipeline, I believe most people still do not know how to use, so share this article for your reference, I hope you have a lot of harvest after reading this article, let's go to understand it together!
Redis uses a client-server (CS) model and TCP servers for request/response protocols. This means that a request usually follows these steps:
The client sends a query request to the server and listens for Socket returns, usually in blocking mode, waiting for the server to respond.
The server processes the command and returns the result to the client.
Analysis of Common Mode and Pipeline Mode
Normal mode: Since there will be network latency for communication, suppose the packet transfer time between client and server takes 0.125 seconds. Then the above three commands and six messages take at least 0.75 seconds to complete. So even if redis can process 100 commands per second, our client can only issue four commands per second. This clearly underuses redis processing power.
Pipeline mode: (pipeline) can send multiple commands at a time and return the results at one time after execution. Pipeline reduces the round-trip delay time by reducing the number of communications between the client and redis, and the principle of Pipeline implementation is queue. The principle of queue is first-in-first-out, so as to ensure the sequence of data. The default number of synchronizations in Pipeline is 53, which means that when 53 pieces of data are accumulated in arges, the data will be submitted. The process is as shown in the following figure: client can put three commands into a tcp message to send together, server can put the processing results of three commands into a tcp message to return.
Note that commands are sent in pipeline packages, and redis must cache the results of all commands before processing them. The more commands you pack, the more memory your cache consumes. So it's not about packing as many commands as possible. How much is appropriate needs to be tested on a case-by-case basis.
Case 1: Write 1 million pieces of data to redis//Generate 1 million pieces of data to the specified file declare(strict_types=1);//Enable strongly typed mode function random($length, $numeric = false){ $seed = base_convert(md5(microtime() . $_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35); $seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed)); if ($numeric) { $hash = ''; } else { $hash = chr(rand(1, 26) + rand(0, 1) * 32 + 64); $length--; } $max = strlen($seed) - 1; for ($i = 0; $i
< $length; $i++) { $hash .= $seed{mt_rand(0, $max)}; } return $hash;}$filePath = './data.txt';for ($i = 0; $i connect('192.168.1.9', 6379); $redis->auth ('****');//password authentication $redis->select(0);//select library $redis->pipeline();//Open pipeline foreach ($arr as $key => $value) { $redis->hsetNx('helloworld', (string)$key, $value); } $redis->exec(); echo $redis->hGet('helloworld', '1000000') . PHP_EOL; echo $redis->hGet('helloworld', '1000001') . PHP_EOL;} catch (\Exception $e) { echo $e->getMessage();} Case 2: Batch setting and reading through pipeline//Batch setting try { $redis = new \Redis(); $redis->connect('192.168.1.9', 6379); $redis->auth('******'); $redis->select(0); $redis->pipeline();//Open pipeline $redis->set('str1', 'h'); $redis->set('str2', 'e'); $redis->set('str3', 'l'); $redis->set('str4', 'l'); $redis->set('str5', 'o'); $redis->set('str6', 'w'); $redis->set('str7', 'o'); $redis->set('str8', 'r'); $redis->set('str9', 'l'); $redis->set('str10', 'd'); $result = $redis->exec(); print_r($result);} catch (\Exception $e) { echo $e->getMessage();} Result: Array( [0] => 1 [1] => 1 [2] => 1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [7] => 1 [8] => 1 [9]=> 1)//read try { $redis = new \Redis(); $redis->connect('192.168.1.9', 6379); $redis->auth('******'); $redis->select(0); $redis->pipeline();//Open pipeline $redis->get('str1'); $redis->get('str2'); $redis->get('str3'); $redis->get('str4'); $redis->get('str5'); $redis->get('str6'); $redis->get('str7'); $redis->get('str8'); $redis->get('str9'); $redis->get('str10'); $result = $redis->exec(); print_r($result);} catch (\Exception $e) { echo $e->getMessage();} Result: Array( [0] => h [1] => e [2] => l [3] => l [4] => o [5] => w [6] => o [7] => r [8] => l [9]=> d) The above is all the content of this article, thank you for reading! I believe that everyone has a certain understanding, hope to share the content to help everyone, if you still want to learn more knowledge, welcome to pay attention to the industry information channel!
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
The market share of Chrome browser on the desktop has exceeded 70%, and users are complaining about
The world's first 2nm mobile chip: Samsung Exynos 2600 is ready for mass production.According to a r
A US federal judge has ruled that Google can keep its Chrome browser, but it will be prohibited from
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
About us Contact us Product review car news thenatureplanet
More Form oMedia: AutoTimes. Bestcoffee. SL News. Jarebook. Coffee Hunters. Sundaily. Modezone. NNB. Coffee. Game News. FrontStreet. GGAMEN
© 2024 shulou.com SLNews company. All rights reserved.