如何使用 Lua 脚本在 Redis 中使用 'hget' 命令获取键的值
2018-1-25 10:25:4
收藏:0
阅读:132
评论:3
我想使用 'hget' 命令总结每月的键值。
测试集) hmset SiteID:TotalCnt 20180101 10 20180102 2 20180103 5 20180120 10 20180131 30 20180205 20 20180210 5
我想总结 2018.01 的键值 所以,我做了。。
sumkey.lua
local mon = ARGV[1]
local sumkey = 0
local forkey = ''
for i = 1,31 do
if i < 10 then local dd = '0' .. tostring(i)
else dd = tostring(i)
end
forkey = mon .. dd
sumkey = sumkey + redis.call('hget' , KEYS[1] , forkey)
end
return sumkey
ubuntu@:~$ redis-cli -n 2 --eval sumkey.lua (error) ERR Error running script (call to f_1c9d9d311f9c1e2fbb34fa81176539ad45da3b5b): @enable_strict_lua:15: user_script:8: Script attempted to access unexisting global variable 'dd'
tostring 不起作用!!!
我该如何总结键的值???
点赞
用户1442917
你必须在if ... then分支之前“本地化”变量,否则它只在该分支内“可见”,离开分支后该值将还原为之前的值:
local dd
if i < 10 then dd = '0' .. tostring(i)
else dd = tostring(i)
end
你也可以将其转换为一个表达式:
local dd = i < 10 and '0' .. tostring(i) or tostring(i)
或者使用 format:
forkey = mon .. ("%02d"):format(i)
2018-01-25 17:12:36
用户6855994
:sumkey.lua
local key, mon = KEYS[1], ARGV[1]
local subkey
local sumkey, keyval= 0
for i = 1,31 do
if i < 10 then subkey = mon .. '0' .. tostring(i)
else subkey = mon .. tostring(i)
end
keyval = tonumber(redis.call('hget',KEYS[1],subkey))
if keyval ~= nil then
sumkey = sumkey + keyval
end
end
return sumkey
ubuntu@$ redis-cli -n 2 --eval sumkey.lua SiteID:TotalCnt , '201801' (integer) 57
大家有美好的一天~~!!
2018-01-26 01:28:08
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

尝试在循环之前声明
dd变量。 问题在于如果if语句没有被满足,dd变量将没有被定义,因此它会尝试查找名为dd的全局变量。