PHP中Redis管道
2017-03-17 16:58
218 查看
Redis是一个TCP服务器,支持请求/响应协议。 在Redis中,请求通过以下步骤完成:
客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应。
服务器处理命令并将响应发送回客户端。
如果需要一次执行多个redis命令,以往的方式需要发送多次命令请求,有redis服务器依次执行,并返回结果,
为了解决此类问题,设计者设计出了redis管道命令:
客户端可以向服务器发送多个请求,而不必等待回复,并最终在一个步骤中读取回复,从而大大增加了协议性能
代码示例:
redis版本是
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$pipe = $redis->multi(Redis::PIPELINE);
for ($i = 0; $i < 3; $i++) {
$key = "key::{$i}";
print_r($pipe->set($key, str_pad($i, 2, '0', 0)));
echo PHP_EOL;
print_r($pipe->get($key));
echo PHP_EOL;
}
$result = $pipe->exec();
print_r($result);参数说明:
Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
Redis::MULTI:将多个操作当成一个事务执行
Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
结果如下图,可以看出每次执行set/get命令,并没有被redis服务器立即执行,执行结果被放在了最后的result中
客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应。
服务器处理命令并将响应发送回客户端。
如果需要一次执行多个redis命令,以往的方式需要发送多次命令请求,有redis服务器依次执行,并返回结果,
为了解决此类问题,设计者设计出了redis管道命令:
客户端可以向服务器发送多个请求,而不必等待回复,并最终在一个步骤中读取回复,从而大大增加了协议性能
代码示例:
redis版本是
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$pipe = $redis->multi(Redis::PIPELINE);
for ($i = 0; $i < 3; $i++) {
$key = "key::{$i}";
print_r($pipe->set($key, str_pad($i, 2, '0', 0)));
echo PHP_EOL;
print_r($pipe->get($key));
echo PHP_EOL;
}
$result = $pipe->exec();
print_r($result);参数说明:
Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
Redis::MULTI:将多个操作当成一个事务执行
Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
结果如下图,可以看出每次执行set/get命令,并没有被redis服务器立即执行,执行结果被放在了最后的result中
相关文章推荐
- PHP中利用Redis管道加快执行
- PHP中利用Redis管道加快执行
- PHP中利用Redis管道加快执行
- 为php增加redis扩展(php_redis.so)
- 安装redis和phpredis模块
- Redis的PHP客户端
- redis客户端 predis与phpredis 比较
- Redis的php扩展phpredis安装小记
- PHP服务器端通过命名管道与C/C++程序通信
- PHP-redis中文文档
- Linux(Centos5.5) redis 安装及redisphp拓展安装应用
- PHP多进程编程(二)管道通信
- redis的PHP扩展包安装方法
- CentOS中,安装Apache+PHP+Mongo DB+Redis DB
- php-redis客户端使用方法
- 基于Redis的PHP聊天室程序
- php 读取shell管道传输过来的内容
- Redis与PHP的安装与使用Redis与PHP的安装与使用
- Redis php 扩展安装
- CentOS中,安装Apache+PHP+Mongo DB+Redis DB