Java小强个人技术博客站点    手机版
当前位置: 首页 >> 开源 >> LUA脚本判断是否为空

LUA脚本判断是否为空

42981 开源 | 2022-6-2

Lua是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。

lua.jpg


在某次学习中,发现示例中仅仅对获取的值进行了判断,那么如果值为空,在LUA中该怎么判断呢?

这貌似是个简单问题,简单到一说判断为空就开始长篇大论了,因为可能真的太简单了吧,不过没办法,自己就是不会。

无奈只能自己编写脚本自己调用调试。


找到一个说法是这样的:在lua中,除了nil和false,其他的值都为真,包括0,可以通过nil为false这一点来判断是否为空。


那么编写一个脚本进行测试,如果GET到的值为空,就返回404,其他返回1

--- 在lua中,除了nil和false,其他的值都为真,包括0,可以通过nil为false这一点来判断是否为空
if(not(redis.call('get', ARGV[1]))) then
    return 404
end
return 1


注意,这里用到了取反操作符NOT,然后编写Java代码进行调用

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import java.util.Collections;
@SpringBootTest
public class RedisTest {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    private static final DefaultRedisScript<Long> TEST_SCRIPT;
    static {
        TEST_SCRIPT = new DefaultRedisScript<>();
        TEST_SCRIPT.setLocation(new ClassPathResource("test.lua"));
        TEST_SCRIPT.setResultType(Long.class);
    }
    @Test
    public void testLua(){
        // 1.执行lua脚本
        Long result = stringRedisTemplate.execute(
                TEST_SCRIPT,
                Collections.emptyList(),
                "Java001"
        );
        System.out.println(result);
    }
}


这里让他去获取Java001的值,我的Redis是没有的,返回404。然后获取一个存在的,返回就是1。实验证明,这个方法是可行的。


END

推荐您阅读更多有关于“ 脚本 redis lua 为空 ”的文章

上一篇:Kafka安装Windows版 下一篇:简易Zookeeper客户端管理工具

猜你喜欢

发表评论:

评论:

回复 Java小强 评论于 2022-06-02 13:25
window下你可以使用一个叫"SciTE"的IDE环境来执行lua程序,下载地址为:
Github 下载地址:https://github.com/rjpcomputing/luaforwindows/releases