IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

二十六、Redis 管道技术

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

文章永久连接:https://tech.souyunku.com/?p=4811

Redis 是一种基于 客户端-服务端 模型以及 请求/响应 协议的 TCP 服务

所以一次 Redis 命令请求会遵循以下步骤

1、 客户端向服务端发送一个查询请求,并监听 Socket 返回,通常是以阻塞模式,等待服务端响应
2、 服务端处理命令,并将结果返回给客户端

每一个单独的 Redis 命令都要重复以上步骤,如果要同时发送多个 Redis 命令,则非常消耗带宽和时间

Redis 管道技术

Redis 管道可以向 Redis 服务发送多个 Redis 命令,然后一次性读取所有服务端的响应

下面的 Shell 范例使用 Redis 管道来一次性操作多个 Redis 命令

注意 $ 符号是命令提示符 nc 命令 NetCat 的简写,你可以访问 Linux nc 了解更多

$ (echo -en "PING\r\n SET site tech.souyunku.com\r\nGET site\r\nINCR visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379
+PONG
+OK
$11
tech.souyunku.com
:1
:2
:3

上面的 Shell 命令,我们先使用 PING 命令查看 Redis 服务是否可用, 之后我们们设置了 site 的值为 tech.souyunku.com ,然后我们获取 site 的值并使得 visitor 自增 3 次

从返回的结果中我们可以看到这些命令是一次性向 Redis 服务提交,然后一次性读取所有服务端的响应

Redis 管道的优势

Redis 管道最显著的优势是提高了 Redis 服务的性能

更多范例

下面的 Ruby 代码用来测试 Redis 管道技术对速度的提升效果

require 'rubygems' 
require 'redis'

def bench(descr) 
    start = Time.now 
    yield 
    puts "#{descr} #{Time.now-start} seconds" 
end

def without_pipelining 
    r = Redis.new 
    10000.times { 
       r.ping 
    } 
end

def with_pipelining 
    r = Redis.new 
    r.pipelined { 
       10000.times { 
          r.ping 
    } 
} 
end


bench( "without pipelining" )
{ 
    without_pipelining 
}

bench( "with pipelining" )
{ 
    with_pipelining 
}

在我的 Mac OS 系统中运行代码,输出结果如下

without pipelining 1.195238 seconds 
with pipelining 0.230783 seconds

从结果可以看出来:开启了管道操作后,往返时延的速度效率提升了将近 5 倍

干货推荐

本站推荐:精选优质专栏

附录:Redis 教程:系列文章


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(77) 打赏



未经允许不得转载:搜云库技术团队 » 二十六、Redis 管道技术

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367