处理 Redis 中的浮点数
2013-7-11 21:22:2
收藏:0
阅读:136
评论:2
我正在使用一个项目,需要使用Redis,想知道是否有任何方式可以在LUA脚本中对浮点数进行正确的数学运算和比较(或任何方式)。例如,我有一个字段,需要将其乘以另一个字段,并将其与第三个字段进行比较。例如
local staticVal = .2
local dynamicVal2 = redis.pcall('GET', 'dynamicVal2')
local calcVal = dynamicVal * staticVal
local compareVal = 100
if calcVal < compareVal then
return false
else
return true
是否有可能这样做,或者我必须从另一种语言中进行GET调用,并在那里进行比较?
谢谢
编辑:
或者,只是比较浮点数的能力将会有所帮助。似乎是进行了字典比较,而不是数值比较。
编辑2:
SET val1 10.5
SET val2 3.5
EVAL "local val1 = redis.pcall('GET','val1'); local val2 = redis.pcall('GET','val2'); if val1 > val2 then return val1 else return val2 end" 0
点赞
用户501459
似乎是进行字典比较而不是数值比较。
local val1 = redis.pcall('GET', 'val1');
local val2 = redis.pcall('GET', 'val2');
if val1 > val2 then ...
检查val1和val2的类型(例如print(type(val1)))。我猜它们是字符串,这就是为什么您会得到一个字典比较而不是一个数值比较。
Lua的本机数值类型是浮点数,可以比较它们。如果您的值确实是字符串,则只需要在比较之前将它们转换为数字(例如tonumber(val1))即可。
2013-07-11 22:38:51
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
当然可以:在 Lua 中,所有数字都是浮点数。实际上,与浮点数相比,使用大整数值更加困难(由于内部数字表示)。
从 redis-cli 中:
set dynamicVal2 100000.0 eval "local staticVal = .2 ; local dynamicVal = tonumber(redis.call('GET', 'dynamicVal2')); local calcVal = dynamicVal * staticVal; local compareVal = 100; if calcVal < compareVal then return false; else return true; end;" 0 (integer) 1现在,对于您所提供的示例,使用 Lua 并不是很有用:可以使用类似的效率在客户端上轻松完成服务器端的 Lua 操作。如果可以在客户端上完成更多的操作,则可以更好地处理许多其他数据存储。而且,如果您可以在客户端执行相同数量的往返操作,则最好在客户端上执行。
如果实际使用 Lua 脚本避免多次往返到 Redis,则会更有用。