我正在尝试通过 c# 使用 using 连接 redis ServiceStack.Redis
。
我已经编写了下面的代码来根据指定的密钥验证数字。
argv[1]
是关键
argv[2]
是数字
string strScript = " local intCurrentVal = redis.call('GET', '' .. ARGV[1] .. ''); \n"
+ "if (tonumber(intCurrentVal) <= 0 ) then return 1 elseif ( (tonumber(intCurrentVal)) - (tonumber('' .. ARGV[2] .. '')) < 0 ) then return 0 end;"
+ "local intUpdatedVal = redis.call('SET', '' .. ARGV[1] .. '',( intCurrentVal - tonumber('' .. ARGV[2] .. '')));"
+ "local intCurr = redis.call('GET', '' .. ARGV[1] .. ''); return intCurr";
逻辑步骤:
- 获取当前值
- 检查当前值是否不应小于或等于 0
- 检查当前值 - 传递的值是否不应小于 O
- 如果当前值 - 通过不小于 0 则将(当前值 - 通过)设置为当前值
- 获取当前值
是否可以优化和调整以下 lua 脚本以提高性能。请帮忙。