前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go Redis 管道(pipeline)运用

go Redis 管道(pipeline)运用

原创
作者头像
IT工作者
发布2022-07-21 16:55:54
2.1K0
发布2022-07-21 16:55:54
举报
文章被收录于专栏:程序技术知识程序技术知识

Redis在进行大批量操作时,为了提高运行效率,往往会采用pipe,今天实测对比了一下管道的运行效率,还是挺惊人的.

代码语言:go
复制
package main
 
import (
	"flag"
	"fmt"
	"github.com/go-redis/redis/v8"
	"context"
	"time"
)
 
func main() {
 
	var pipucot int = 1
	flag.IntVar(&pipucot, "pc", 1000, "pip批量处理个数")
	flag.Parse()
 
	rdb := redis.NewClient(&redis.Options{
		Addr:"192.168.1.101:6379",
	})
 
	ctx := context.Background()
 
	pip := rdb.Pipeline()
 
	t := time.Now()
	cmdcot := 100000
 
	for k:=1;k<cmdcot;k++{
 
		key:= fmt.Sprint("keypip%d", k)
		err := pip.Set(ctx, key, k, 0).Err()
		if err != nil {
			panic(err)
		}
		if k%pipucot==0{
			pip.Exec(ctx)
		}
	}
	println("pip use time:", time.Since(t).Milliseconds())
 
	t1 := time.Now()
	for k:=1;k<cmdcot;k++{
 
		key:= fmt.Sprint("key%d", k)
		err := rdb.Set(ctx, key, k, 0).Err()
 
		if err != nil {
			panic(err)
		}
	}
	println("no pip use time:", time.Since(t1).Milliseconds())
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档