goredis库连接客户端

package client
import ("github.com/go-redis/redis""github.com/sirupsen/logrus"
)var MainRDS *redis.Client
func init() {ConnectRedis()
}
func ConnectRedis() {MainRDS = redis.NewClient(&redis.Options{Addr: "127.0.0.1:6379", Password: "******"})err := MainRDS.Ping().Err()if err != nil {logrus.Infof("[ConnectRedis]connect redis error:%s", err.Error())panic("init client error")}
}

pipeline命令的使用

PS:如果redis采用了集群部署,不可以直接使用pipeline命令进行操作,因为访问的key可能并不在同一个节点上

// PipelineGetHashField 使用pipeline命令获取多个hash key的单个字段
// keyList,需要获取的hash key列表
// field 需要获取的字段值
func PipelineGetHashField(keyList []string,filed string) []string {pipeClient :=client.MainRDS.Pipeline()for _, key := range keyList {pipeClient.HGet(key, filed)}res, err := pipeClient.Exec()if err != nil {if err != redis.Nil {logrus.WithField("key_list", keyList).Errorf("[PipelineGetHashField] get from redis error:%s", err.Error())}/********** !!!!!!!!!!*************/// 注意这里如果某一次获取时出错(常见的redis.Nil),返回的err即不为空// 如果需要处理redis.Nil为默认值,此处不能直接return}valList := make([]string, 0, len(keyList))for index, cmdRes := range res {var val string// 此处断言类型为在for循环内执行的命令返回的类型,上面HGet返回的即为*redis.StringCmd类型// 处理方式和直接调用同样处理即可cmd, ok := cmdRes.(*redis.StringCmd) if ok {val,err = cmd.Result()if err != nil {logrus.WithField("key",keyList[index]).Errorf("[PipelineGetHashField] get key error:%s",err.Error())}}valList = append(valList, val)}return valList
}

golang:goredis库pipeline使用方式相关推荐

  1. golang常用库之-操作redis go-redis/redis库、 go-redsync/redsync库(redis分布式锁)

    文章目录 golang常用库之-操作redis go-redis/redis库. go-redsync/redsync库(redis分布式锁) 一.什么是go-redis/redis库 go-redi ...

  2. Golang 标准库log的实现

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://gotaly.blog.51cto.com/8861157/1406905 前一篇 ...

  3. golang 标准库间依赖的可视化展示

    简介 国庆看完 << Go 语言圣经 >>,总想做点什么,来加深下印象.以可视化的方式展示 golang 标准库之间的依赖,可能是一个比较好的切入点.做之前,简单搜了下相关的内 ...

  4. viper4android io错误,golang常用库之配置文件解析库-viper使用详解

    一.viper简介 viper 配置管理解析库,是由大神 Steve Francia 开发,他在google领导着 golang 的产品开发,他也是 gohugo.io 的创始人之一,命令行解析库 c ...

  5. GoLang各种库(转)

    原文出处:https://www.jianshu.com/p/6a147fc00721 golang用于创建和发送电子邮件的库 douceur - HTML 邮件中的内联 CSS email - 一个 ...

  6. 最详细的golang + 私库(gitlab gitee) 模块开发 这一篇文章解决所有问题

    golang独立模块开发流程 大纲 基本概念与背景 模块开发流程总结 基于gitee私库 基于gitlab私库 基本概念与背景 java项目开发过程中,有不同的项目组,有的项目组做业务开发,有的项目组 ...

  7. golang常用库之mapstructure包 | 多json格式情况解析、GO json 如何转化为 map 和 struct、Go语言结构体标签(Struct Tag)

    文章目录 golang常用库之mitchellh/mapstructure包 | go将map转换为struct 一.msgpack 二.背景 三.多json格式情况解析使用思路 四.mapstruc ...

  8. 「GoCN酷Go推荐」基于泛型的 Golang lodash 库 — samber/lo

    近日,Go 核心开发团队终于宣布了 Go 1.18 正式版本的发布!这是一个大家期待很久的版本!Go 1.18 包含大量新功能:模糊测试.性能改进.工作区等,以及 Go 语言开源以来最大的一次语法特性 ...

  9. Golang常用库学习

    Golang常用库学习 标准库fmt 标准库log 标准库time 标准库strconv 标准库 testing 单元测试 简单测试 单元测试覆盖率统计 表格驱动测试 性能(基准)测试 标准库 os ...

  10. Golang标准库中的fmt

    Golang标准库中的fmt fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输入内容两大部分. 1. 向外输出 标准库fmt提供了以下几种输出相关函数. P ...

最新文章

  1. 小心NLS_SORT和NLS_COMP的设置成为性能杀手
  2. docker编译Linux内核,c – 如何编译在docker中使用内核函数的C代...
  3. 第一个linux桌面,Ubuntu 4.10 “Warty Warthog”:回顾第一个Ubuntu Linux桌面
  4. IdentityServer4系列 | 支持数据持久化
  5. [QUICK UI] 有哪些目前流行的前端框架
  6. 5月首批国产游戏版号下发:又一大波游戏要来了
  7. 庞伟(为奥运冠军名字作诗)
  8. 学习Opencv---例3.12----用imageROI来添加某范围的像素
  9. 使用dva脚手架(dva-cli)快速构建React项目
  10. WPF TreeViewItem
  11. 鼠标宏会不会封号_每天一个英雄联盟封号技巧:峡谷先锋可以连续撞塔两次,你会吗?...
  12. 【数字图像处理系列三】图像增强:线性、 分段线性、 对数、 反对数、 幂律(伽马)变换、直方图均衡
  13. Hanlp-地名识别调试方法详解
  14. python控制摄像头云台_python-onvif实现客户端控制相机云台
  15. 项目研发阶段性总结模板
  16. Windows运行机理——主程序—WinMain
  17. 微信公众号自定义菜单如何添加特殊符号?
  18. sql中的大于小于等于的表示
  19. K线形态识别_双飞乌鸦
  20. electron的单元测试(基于mocha+chai+karma)

热门文章

  1. 西安交大计算机系96年录取分数,西安交通大学2018年各省录取分数线
  2. 机器人领域的SCI期刊介绍
  3. randn函数加噪声_Matlab笔记——AWGN函数详解与实例——AWGN加性高斯白噪声+QPSK调制...
  4. Apple Pencil 一代和二代有什么区别
  5. 触动精灵 PLIST 文件读取 详解
  6. Linux查看当前时间
  7. 计算机事业单位简答题MAC
  8. mysql报错1194_ERROR 1194 (HY000): Table 't1' is marked as crashed and should be repaired
  9. 基于R语言的主成分分析
  10. 北航计算机组成原理课程设计-2021秋 PreProject-MIPS-MIPS 汇编程序设计