Redis 在Golang中使用遇到的坑
1、从lua脚本传回到go那边的数字是string类型
2、hincrby 返回当前值的计算结果(即存放到redis中的值)
3、hset 一个不存在的key,返回什么呢?即设置失败返回什么错误?(会创建出这个key来,并返回1,如果这个已key存在,则返回0[设值仍然会成功]
4、hget 一个空的值,会返回nil?还是0?(在lua里面返回false,直接返回到go中会报err错:“redis:nil”)
hgetall 一个不存在key,会返回空的map{},不会返回error
5、hmset 返回的始终是 ok:OK(不论key是否已存在)
6、reids的key区分大小写(一样的key,大小写不同,代表的是两个key)
7、zscore,在lua中得到的值是string类型,后端go得到的也是string类型
8、zscore,在lua中取一个不存在的key,在lua中得到的结果是 false(boolean)
如:local r = redis.call('zscore','lt_mobile_package','test') return r;
key:lt_mobile_package,不存在时,lua中得到的r为false(boolean类型),后端go得到的是err(redis: nil),冒号后面有个空格
9、zscore,在lua中取一个不存在的member时,结果和上一条一样
10、eval执行lua脚本的格式:eval script numkeys key [key ...] arg [arg ...](参数依次为:脚本字符串、key的数量、key、带入的参数)
坑:A、后面的key必须传,B、确保和lua script里面要操作的key在同一个redis节点上,否则报错:
ERR Error running script (call to f_c7be025ded1da0247b48d3acfe266ecf67957030): @user_script:1: @user_script: 1: Lua script attempted to access a non local key in a cluster node
因hydra的key是可选参数,被我忽略了之后,测试代码间歇报错(不会一直报,一直以为是配置问题。纠结了很久,最终还是同事发现的)。
Redis 在Golang中使用遇到的坑的更多相关文章
- Golang中的坑二
Golang中的坑二 for ...range 最近两周用Golang做项目,编写web服务,两周时间写了大概五千行代码(业务代码加单元测试用例代码).用Go的感觉很爽,编码效率高,运行效率也不错,用 ...
- Golang 中的坑 一
Golang 中的坑 短变量声明 Short variable declarations 考虑如下代码: package main import ( "errors" " ...
- Golang中WaitGroup使用的一点坑
Golang中WaitGroup使用的一点坑 Golang 中的 WaitGroup 一直是同步 goroutine 的推荐实践.自己用了两年多也没遇到过什么问题.直到一天午睡后,同事扔过来一段奇怪的 ...
- golang中使用Redis
一.golang中安装Redis github地址:https://github.com/garyburd/redigo 文档地址:http://godoc.org/github.com/garybu ...
- Golang中的自动伸缩和自防御设计
Raygun服务由许多活动组件构成,每个组件用于特定的任务.其中一个模块是用Golang编写的,负责对iOS崩溃报告进行处理.简而言之,它接受本机iOS崩溃报告,查找相关的dSYM文件,并生成开发者可 ...
- 【荐】详解 golang 中的 interface 和 nil
golang 的 nil 在概念上和其它语言的 null.None.nil.NULL一样,都指代零值或空值.nil 是预先说明的标识符,也即通常意义上的关键字.在 golang 中,nil 只能赋值给 ...
- Golang 中使用多维 map
http://tnt.wicast.tk/2015/11/02/golang-multiple-dimension-map/ Golang 的 XML/JSON 解析库乍看使用起来很方便,只要构造一样 ...
- Golang 中操作 Mongo Update 的方法
Golang 和 MongoDB 中的 ISODate 时间交互问题 2018年02月27日 11:28:43 独一无二的小个性 阅读数:357 标签: GolangMongoDB时间交互时间转换 更 ...
- golang中,slice的几个易混淆点
slice在golang中是最常用的类型,一般可以把它作为数组使用,但是比数组要高效呀.不过,我感觉这个东西用的不好坑太多了.还是需要了解下他底层的实现 slice的结构定义 type slice s ...
随机推荐
- reifiable type与raw type
下面的逻辑需要明白如下两个概念: 4.7. Reifiable Types 4.8. Raw Types 举几个是Reifiable Types的例子,如下: class A{} class B< ...
- PHP之mb_convert_encoding使用
mb_convert_encoding (PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_convert_encoding - Convert character encodi ...
- WPF解决当ScrollViewer中嵌套ItemsControl时,不能使用鼠标来滚动翻页
1. ScrollViewer:滚动条容器,当内容超过指定的长度和宽度后,就会出现滚动条,而且可以使用鼠标中键来滚动, 简单例子如下: <Window x:Class="Connect ...
- C#核心语法-泛型(详细讲解泛型方法、泛型类、泛型接口、泛型约束,了解协变逆变)
泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具 ...
- CSS级联样式表-css选择器
CSS概念 Cascading Style sheet 级联样式表 表现HTMl或XHTML文件样式的计算机语言 包括对字体,颜色,边距,高度,宽度,背景图片,网页定位等设定 建议:把表示样式的代码从 ...
- 初识DataGridView 表格数据控件
DataGridView控件提供了一种强大而灵活的以表格形式显示数据的方式,用户可以使用DataGridView控件来显示少量数据的只读视图,也可以对其进行缩放以显示特大数据集的可编辑视图. 扩展Da ...
- string转xml
//string转xml XmlDocument doc = new XmlDocument(); doc.LoadXml(temp); XmlNodeList nodes1 = doc.GetEle ...
- 【转】redis windows环境搭建
一.下载redis windows压缩包 地址参考: https://github.com/ServiceStack/redis-windows/tree/master/downloads https ...
- Cheatsheet: 2017 10.01 ~ 12.31
Mobile Updating Your App for iOS 11 Get Started With Natural Language Processing in iOS 11 Getting S ...
- [C语言] 数据结构-预备知识结构体
结构体 为什么出现结构体 为了表示一些复杂的数据,而普通的基本类型变量无法满足需求 什么叫结构体 结构体是用户根据实际需要自己定义的复合数据类型 如何使用结构体 1.两种方式 一般使用结构体指针的形 ...