
调用 tonumber 函数后都是 nil ,直接 return tonumber(ARGV[2])也是 null ,但是下面的返回 ARGV[2]返回是字符串 2 ,在 redis 客户端执行 eval "return tonumber(ARGV[1])" 1, 1, 2 可以返回 2 ,请问是为啥呢?
@Test void testSc() { String s = "local first = tonumber(ARGV[1]) " + "local secOnd= tonumber(ARGV[2]) " + "local third = tonumber(ARGV[3]) " + "local fourth= tonumber(ARGV[4]) " + // "return tonumber(ARGV[2])"; //返回 null "return second"; //返回 null DefaultRedisScript<Long> script = new DefaultRedisScript<>(); script.setScriptText(s); script.setResultType(Long.class); Long executeTimes = redisTemplate.execute(script, Collections.singletonList("key"), 1 + "", 2 + "", 3 + "", 4 + ""); System.out.println("tonumber: " + executeTimes); s = "local first = tonumber(ARGV[1]) " + "local secOnd= tonumber(ARGV[2]) " + "local third = tonumber(ARGV[3]) " + "local fourth= tonumber(ARGV[4]) " + "return ARGV[4] "; //返回 4 DefaultRedisScript<String> redisScript = new DefaultRedisScript<>(); redisScript.setScriptText(s); redisScript.setResultType(String.class); String res = redisTemplate.execute(redisScript, Collections.singletonList("key"), 1 + "", 2 + "", 3 + "", 4 + ""); System.out.println("string: " + res); } 1 Yoock 2022-03-29 15:29:12 +08:00 |