lua中判断redis返回null_xiejunna的博客-CSDN博客_lua null


本站和网页 https://blog.csdn.net/xiejunna/article/details/80676219 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

lua中判断redis返回null_xiejunna的博客-CSDN博客_lua null
lua中判断redis返回null
xiejunna
于 2018-06-13 11:07:14 发布
8266
收藏
分类专栏:
lua
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiejunna/article/details/80676219
版权
lua
专栏收录该内容
34 篇文章
4 订阅
订阅专栏
今天遇到一个麻烦的问题,查询redis时候,查到数据的时候正常返回,查询不到数据时,返回了null,然而在lua中,常见的nil,但不常见null,这时候lua中对redis返回的null如何做判断呢? 于是各种尝试。 这是经过公司基础库封装的结果,并非官方的返回,redis返回结果如下:
{"retmsg":"","result":null,"retcode":"0000"}
开始尝试了这样常规的判断,把获取的result当成字符串null,直接判断null,都已失败告终。显而易见,这个null没有双引号,lua type返回结果也没有null,最终用此方法解决
if res.result == ngx.null then
tools.logs("result is null")
end
ngx.null是什么?
那么ngx.null到底是什么东西呢? 在http://wiki.nginx.org/HttpLuaModule有如下说明:
The ngx.null constant is a NULL light userdata usually used to represent nil values in Lua tables etc and is similar to the lua-cjson library’s cjson.null constant. This constant was first introduced in the v0.5.0rc5 release.
ngx.null在print、ngx.print、ngx.log、ngx.say等函数中,有如下特点:
Lua nil arguments are accepted and result in literal “nil” strings while Lua booleans result in literal “true” or “false” strings. And the ngx.null constant will yield the “null” string output.
为什么要这么设计?
lua-resty-redis中,为什么要把redis查询为空的情况返回一个userdata类型的ngx.null?直接返回nil不行吗?
答案是不行,因为nil在lua中有其特殊意义,如果一个变量被设置为nil,就等于说该变量未定义,与无穷无尽的其他未定义的变量一样。那么,如果把redis查询为空的结果设置为nil,就无法把”查询为空”和“未定义”区分开来了,例如在一个table中,一个key对应一个value,如果将该value设置为nil,则相当让key凭空消失,这显然是不合理的。所以必须用一个userdata类型的独特的值来表示这种查询为空,但又不等同于未定义的变量,例如ngx.null。同样的情况想必在sql的lua模块中也会出现,用来处理记录中键值查询为空的情况。
xiejunna
关注
关注
点赞
收藏
打赏
评论
lua中判断redis返回null
今天遇到一个麻烦的问题,查询redis时候,查到数据的时候正常返回,查询不到数据时,返回了null,然而在lua中,常见的nil,但不常见null,这时候lua中对redis返回的null如何做判断呢? 于是各种尝试。 这是经过公司基础库封装的结果,并非官方的返回,redis返回结果如下:{"retmsg":"","result":null,"retcode":"0000"}开始尝试了...
复制链接
扫一扫
专栏目录
lua读取redis数据的null判断示例代码
09-09
最近在工作中遇到了一个问题,通过查找相关资料才得知原因是因为返回结果的问题,下面这篇文章主要给大家介绍了关于lua读取redis数据的null判断的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
Redis和Lua使用过程中遇到的小问题
12-16
问题
在 Redis 里执行 get 或 hget 不存在的 key 或 field 时返回值在终端显式的是 (nil),类似于下面这样
127.0.0.1:6379> get test_version
(nil)
如果在 Lua 脚本中判断获取到的值是否为空值时,就会产生比较迷惑的问题,以为判断空值的话就用 nil 就可以了,然鹅事实却并不是这样的,如下所示:
127.0.0.1:6379> get test_version
(nil)
127.0.0.1:6379> EVAL "local a = redis.call('get',KEYS[1]) print(a) if a ==
参与评论
您还未登录,请先
登录
后发表或查看评论
【LUA】LUA扣减库存性能测试
最新发布
qq_43783527的博客
09-17
196
写好lua脚本之后,由于项目中都在使用该lua,作为lua脚本的开发者,你需要清楚你写的lua脚本的性能如何。
Lua 基本数据类型了解
Liu_ChangC的博客
07-14
557
**nil:** 在Lua语句中,没有声明一个变量,就直接去使用这个变量的话,这个变量的值就是nil,也就是null空,nil在if判断语句里面表示false的意思,除了nil之外其他数值都被当成true。
```lua
a=100
if(a)
then
print("a有值,这个判断会当成true执行")
end
if(nil)
then
print("nil为false,所以不执行这里")
else
print("nil为false,所以执行这里")
end
```
所有没有申明的值,都和ni
redis有值查询返回null_redis运行lua脚本hmget返回值为空判断问题-Go语言中文社区...
weixin_42171132的博客
12-31
642
1、redis中准备测试数据hmset test abcd 123 ABCD 456hgetall test2、网上有人说用内置函数next()判断redis-cli -c -p 8000 -n 8 --eval 1.lua testredis-cli -c -p 8000 -n 8 --eval 1.lua test1测试结果 返回的类型都为number,local table_res=red...
Lua - 空值判断的几种情况
华为云官方博客
07-05
8421
【摘要】 在安全领域,lua编程语言因为其小巧在众多工具上都作为插件开发语言,常见的有openresty,nmap等。因此笔者将会开辟一个Lua相关的系列文章,主要记录工作过程中一些领悟或者是一些踩过的坑,希望能够借此平台帮助到读者们。
0x00 背景
最近在写一段nginx+redis的代码,主要基于openresty,其中使用到了lua-resty-redis库。我平时写代码都比较小心,针...
在redis中使用Lua脚本如何判断变量是否为空
cs3235301的博客
11-01
9547
--在lua中,除了nil和false,其他的值都为真,包括0,可以通过nil为false这一点来判断是否为空
local temp = redis.call('get',key)
if temp then
print('temp为非空')
else
print('temp为空值')
...
Lua调用C#语言九(nil和null的比较)
赵某人
06-24
916
Lua代码:
print("*****************Lua调用C# nil和null相关知识点******************");
--往场景对象中添加一个脚本,如果存在就不加 如果不存在就加
GameObject=CS.UnityEngine.GameObject;
Rigidbody=CS.UnityEngine.Rigidbody;
local obj = GameObject("测试添加脚本");
local rig = obj:GetComponent(typeof(Rigidb
lua中判断Destroy后的GameObject为null
BackkomCoder的博客
12-11
1630
在Unity热更新时,lua脚本中变量引用了一个GameObject,然后在Unity中将该GameObject进行Destroy,这个时候,lua脚本所对应的变量并没有为nil,这是因为在与Lua交互时,不能直接在Lua侧判断对象是否为nil(这样判断走的是C#的判空),应该调用如下方法(走的是Unity的判空)。将UnityEngineObjectExtensionForLua.cs注册到Cu...
redis的lua脚本拓展,返回nil及其判断
weixin_30323631的博客
05-04
2272
redis自带的lua脚本
127.0.0.1:6379> hget team wyc
"{\"name\":\"wyycc\",\"age\":\"444\"}"
想要通过redis官方的lua脚本拓展来传递name,age等直接返回对应的值。如果传递name,age等redis的hash中存在的value,则返回其结果,如果不存在返回nil,使得传入和返回结果一一对应。
redis的l...
springboot RedisTemplate+lua接口限流 超过限流次数后返回null问题
Dust_from_fire的博客
03-06
362
lua脚本内容:
local c = redis.call('get',KEYS[1]) or '0'
if tonumber(c) > tonumber(ARGV[1]) then
return c end
c = redis.call('incr',KEYS[1])
if tonumber(c) == 1 then
redis.call('expire',KEYS[1],ARGV[2]) end
return c
接口限流方法:
/**
* 接口限流
* @param
Lua判断表是否为空
Nice_66的博客
03-23
1383
redis有值查询返回null_lua读取redis数据的null判断示例代码
weixin_29171129的博客
02-22
1177
前言为什么要用lua脚本操作redis数据库?1.减少开销–减少向redis服务器的请求次数2.原子操作–redis将lua脚本作为一个原子执行3.可复用–其他客户端可以使用已经执行过的lua脚本4.增加redis灵活性–lua脚本可以帮助redis做更多的事情lua脚本本身体积小,启动速度快.因此,从redis 2.6.0开始,redis在服务器端内置lua解释器,下面话不多说了,来开始本文的正...
Lua学习之路-1
小渣渣的博客
01-05
437
Lua
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 特性
轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来
lua判断字符不为空或空格_Lua - 空值判断的几种情况
weixin_40005887的博客
12-20
2299
【小宅按】 在安全领域,lua编程语言因为其小巧在众多工具上都作为插件开发语言,常见的有openresty,nmap等。因此笔者将会开辟一个Lua相关的系列文章,主要记录工作过程中一些领悟或者是一些踩过的坑,希望能够借此平台帮助到读者们。0x00 背景最近在写一段nginx+redis的代码,主要基于openresty,其中使用到了lua-resty-redis库。我平时写代码都比较小心,针对外部...
Lua基本语法
一墨的博客
08-25
195
本文引用自https://www.jb51.net/article/55394.htm
1. 运行
首先,我们需要知道,Lua是类C的,所以,他是大小写字符敏感的。
下面是Lua的Hello World。注意:Lua脚本的语句的分号是可选的,这个和GO语言很类似。
print("Hello World")
你可以像python一样,在命令行上运行lua命令后进入lua的shell中...
Lua中的非空判断
热门推荐
mozhi
01-13
1万+
非空判断
大家在使用 Lua 的时候,一定会遇到不少和 nil 有关的坑吧。有时候不小心引用了一个没有赋值的变量,这时它的值默认为 nil。如果对一个 nil 进行索引的话,会导致异常。
如下:
local person = {name = "Bob", sex = "M"}
-- do something
person = nil
-- do something
print(pers...
lua-cjson decode中null改成nil
04-11
lua-cjson lua的cjson库 decode略做修改 结果中null还原成nil
Lua检查非空
在代码身上,用心去飞翔
01-31
4368
function CheckNil( obj, msg )
if obj == nil then
if msg then
print( msg )
end
return nil
end
return true
end
nil、null与ngx.null
weixin_33831673的博客
06-07
174
2019独角兽企业重金招聘Python工程师标准>>>
...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
xiejunna
CSDN认证博客专家
CSDN认证企业博客
码龄7年
暂无认证
427
原创
2万+
周排名
2万+
总排名
366万+
访问
等级
2万+
积分
295
粉丝
429
获赞
210
评论
1046
收藏
私信
关注
热门文章
http 500状态码
339266
mysql修改字段长度命令
119497
mysql更新字段为“”或 null
94249
小程序扫描普通链接二维码跳转小程序指定界面
89701
vue项目导入外部css样式和js文件
81137
分类专栏
uniapp
5篇
网络
1篇
jmeter
1篇
前端
1篇
lua
34篇
js
31篇
js
2篇
html
44篇
公众号开发
6篇
TypeScript
1篇
AngularJS2
7篇
java
93篇
android 技术文档
82篇
angularJS1
21篇
http
4篇
vue-js
18篇
nodejs
12篇
weui
2篇
微信公众号
4篇
微信小程序
8篇
小程序
1篇
证书
5篇
linux
15篇
bcd压缩展开
1篇
ios
7篇
utils
1篇
bcd
1篇
github
1篇
jni
1篇
apple-pay
1篇
nginx
3篇
请求
1篇
服务端
6篇
单项双向认证
1篇
UEStudio
2篇
url
1篇
git
4篇
命令
2篇
mysql
24篇
heidisql
1篇
shell
4篇
jquerymobile
1篇
路由
1篇
代码工具
windows
2篇
ip
vue
12篇
mongodb
2篇
redis
1篇
iojs
1篇
百度云
1篇
字节
1篇
docker
5篇
python
29篇
css
1篇
es
6篇
tomcat
1篇
extjs
6篇
签名
1篇
微信支付
1篇
支付宝
最新评论
Error: Cannot find module ‘fs/promises‘
m0_66525622:
太感谢了!!!解决啦
java根据坐标在图片上绘图
Corazn:
博主你好,为什么我设置的画笔颜色是绿色,图片处理完矩形框是灰色的
mysql查询ORDERBY效率低
instance_wx:
能靠点谱不
mysql查询ORDERBY效率低
夜幕.思年华:
写了个错误示例,还不修改,这不就是让人骂的么
mysql查询ORDERBY效率低
写意子:
嘲讽新人、菜鸟大可不必,都是底层百姓,何必呢?
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
uniapp使用本地原生插件及本地真机调试
uniapp真机运行找不到设备列表
ERROR: npm is known not to run on Node.js v10.16.0
2022年26篇
2021年53篇
2020年17篇
2019年78篇
2018年58篇
2017年131篇
2016年147篇
目录
目录
分类专栏
uniapp
5篇
网络
1篇
jmeter
1篇
前端
1篇
lua
34篇
js
31篇
js
2篇
html
44篇
公众号开发
6篇
TypeScript
1篇
AngularJS2
7篇
java
93篇
android 技术文档
82篇
angularJS1
21篇
http
4篇
vue-js
18篇
nodejs
12篇
weui
2篇
微信公众号
4篇
微信小程序
8篇
小程序
1篇
证书
5篇
linux
15篇
bcd压缩展开
1篇
ios
7篇
utils
1篇
bcd
1篇
github
1篇
jni
1篇
apple-pay
1篇
nginx
3篇
请求
1篇
服务端
6篇
单项双向认证
1篇
UEStudio
2篇
url
1篇
git
4篇
命令
2篇
mysql
24篇
heidisql
1篇
shell
4篇
jquerymobile
1篇
路由
1篇
代码工具
windows
2篇
ip
vue
12篇
mongodb
2篇
redis
1篇
iojs
1篇
百度云
1篇
字节
1篇
docker
5篇
python
29篇
css
1篇
es
6篇
tomcat
1篇
extjs
6篇
签名
1篇
微信支付
1篇
支付宝
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
xiejunna
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值