平时经常使用Lua+redis来实现多个redis命令的原子操作,难免遇到int类型溢出的问题。int类型溢出会出现很多问题,会从负数变成正数,整数变负数,一定要注意。
Lua number变量的数字边界值在百万级,10^6,不算大,32位的整数就有2^31(一位留给正负号),大约是2*10^9。lua内部支持的数只有浮点数,可以精确存储上至10^15的整数,详情见:
http://www.lua.org/pil/2.3.html
因此涉及到json编码解码,在过程中要注意,超过边界值的数字,会变成科学计数法。也就是超过14位的数字,经过lua脚本处理,就会变成科学计数法。
存入缓存,json序列化,反序列化的时候,会出现问题。
文章评论