LUA脚本判断是否为空

news2024/11/26 0:56:51

系列文章目录


文章目录

  • 系列文章目录
  • 前言


前言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。
在这里插入图片描述


Lua是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
在这里插入图片描述
在某次学习中,发现示例中仅仅对获取的值进行了判断,那么如果值为空,在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。实验证明,这个方法是可行的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1607061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux 的Jdk1.8详细安装部署教程

一、环境准备 1.下载安装包 下载地址&#xff0c;这是1.8的你也可以选择安装别的版本的 https://www.oracle.com/java/technologies/downloads/#java8-windows 选择想要的系统和对应的位数&#xff0c;点击下载即可 2.上传安装包 选择自己要安装的路径&#xff0c;&#x…

分步搭建HF区块链网络

一.搭建网络规划 采用容器环境&#xff0c;搭建1个排序节点(Orderer)、2个对等节点(Peer)&#xff0c;另外用 一个fabric-cli容器。实训中的绝大部分命令是通过该容器执行的。 容器名称设置 二. 配置HF网络证书 首先docker ps 检查镜像&#xff0c;确保镜像为空 1.生成crypto…

TDesign:腾讯的企业级前端框架,对标elementUI和ant-design

elementUI和ant-design在前端开发者中有了很高知名度了&#xff0c;组件和资源十分丰富了。本文介绍腾讯的一款B端框架&#xff1a;TDesign TDesign 是腾讯公司内部推出的企业级设计体系&#xff0c;旨在为腾讯旗下的各种产品提供一致、高效、优质的设计支持。这个设计体系是由…

今天给大家推荐36套404页面模板

404页面是网站必备的一个页面&#xff0c;它承载着用户体验与SEO优化的重任。当用户访问不存在的页面时&#xff0c;服务器会返回404错误代码&#xff0c;并显示404页面。一个好的404页面可以帮助用户快速找到所需信息&#xff0c;并提升网站的用户体验。 以下是一些演示下载资…

【每日一题】2007. 从双倍数组中还原原数组-2024.4.18

题目&#xff1a; 2007. 从双倍数组中还原原数组 一个整数数组 original 可以转变成一个 双倍 数组 changed &#xff0c;转变方式为将 original 中每个元素 值乘以 2 加入数组中&#xff0c;然后将所有元素 随机打乱 。 给你一个数组 changed &#xff0c;如果 change 是 双…

【ES】springboot集成ES

1. 去Spring官方文档确认版本兼容性 这一版的文档里没有给出springboot的版本对应&#xff0c;但我在一个博主的文章里看到的es8.0以前的官方文档中就有给出来&#xff0c;所以还需要再去寻找spring framework和springboot的对应关系&#xff1f;&#xff1f;&#xff1f; 还…

Java项目 苍穹外卖 黑马程序员

目录 day1一、项目效果展示二、项目开发整体介绍三、项目介绍3.1 定位3.2 功能架构3.3 产品原型3.4 技术选型 四、开发环境搭建4.1 前端环境4.2 后端环境 五、导入接口文档六、Swagger6.1 介绍6.2 使用方式6.3 常用注解 day2一、新增员工二、员工分页查询三、启用禁用员工账号四…

深度解析:基于隐马尔科夫模型的语音转文字技术

引言 语音转文字(Speech-to-Text, STT)技术作为人机交互的重要一环,在智能助手、自动字幕生成、语音命令识别等领域发挥着越来越重要的作用。隐马尔科夫模型(Hidden Markov Model, HMM)作为一种统计模型,因其在处理时间序列数据方面的优势,被广泛应用于语音识别系统中。…

蓝牙耳机推荐高性价比2024,运用六大实战技巧,精准捕获超值机型

​无论是通勤路上、健身房里&#xff0c;还是在家中放松时&#xff0c;蓝牙耳机都是我们享受音乐、提升生活品质的好帮手。随着蓝牙耳机技术的快速发展&#xff0c;各种款式层出不穷&#xff0c;选择起来确实不易。作为一名耳机发烧友&#xff0c;我认为是时候向大家推荐几款质…

Springboot+Vue项目-基于Java+MySQL的房屋租赁系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

Hive 解决数据倾斜方法

数据倾斜问题&#xff0c; 通常是指参与计算的数据分布不均&#xff0c; 即某个 key 或者某些 key 的数据量远超其他 key&#xff0c; 导致在 shuffle 阶段&#xff0c; 大量相同 key 的数据被发往同一个 Reduce&#xff0c; 进而导致该 Reduce 所需的时间远超其他 Reduce&…

深入探索生产者拦截器的使用以及源码设计

文章目录 一、介绍二、使用1. ProducerInterceptor接口2. 实现之统计3. 实现之二次处理4. 小结 三、实现原理1. 初始化流程2. 生效流程 四、总结 一、介绍 在软件设计中&#xff0c;为了方便能够应对不同的场景&#xff0c;一般在一些容易有差异的环节会考虑允许用户自定义逻辑…

数据结构(图)

定义 G (V, E) 图 (点&#xff0c;边) 图&#xff0c;Graph 点&#xff0c;Vertex 边&#xff0c;edge 有空表&#xff0c;空树&#xff0c;但没有空图 图可以没有边|E| 0&#xff0c;但不能没有一个点 稠密图 &稀疏图 是边的多少决定的 &#xff08;见Ex…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 4月19日,星期五

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年4月19日 星期五 农历三月十一 谷雨 1、 景海鹏获颁特级航天功勋奖章&#xff0c;朱杨柱、桂海潮被授予英雄航天员称号。 2、 工信部&#xff1a;加快6G、万兆光网研发力度&#xff0c;加速推进大数据、AI等研发应用。 3、…

NAND数据恢复的方案

NAND Flash是固态硬盘&#xff08;SSD&#xff09;的核心数据存储。然而&#xff0c;NAND Flash因其物理特性和工作原理&#xff0c;存在一定的内在脆弱性&#xff0c;尤其是在数据存储的长期可靠性方面。 比特错误是指在读取NAND Flash时&#xff0c;原本存储的二进制位&#…

单输入多输出(SIMO)和多输入多输出(MIMO)模型是什么?

当谈到单输入多输出&#xff08;SIMO&#xff09;和多输入多输出&#xff08;MIMO&#xff09;模型时&#xff0c;通常指的是工程和信号处理领域中的系统和算法。我列举了一些我研究过的实例&#xff1a; 单输入多输出&#xff08;SIMO&#xff09;&#xff1a; 多标签分类器&a…

RK3588 开发板的魅力所在!

处理器是计算机硬件系统的核心部件&#xff0c;其性能的提升对于设备功能和用户体验起着重要的作用。处理器也是开发板的核心&#xff0c;它决定了其计算性能和图形性能。那么&#xff0c;RK3588处理器属于什么档次&#xff1f;其性能和市场定位如何&#xff1f;市场上有哪些用…

C++信奥教学PPT:CSP_J_算法之双指针算法(中)

1、⼀个⻓度为 n-1 的递增排序数组中的所有数字都是唯⼀的&#xff0c;并且每个数字都在范围0&#xff5e;n-1 之内。在范围 0&#xff5e; n-1 内的 n 个数字中有且只有⼀个数字不在该数组中&#xff0c;请找出这个数字。 2、循环最大值&#xff08;Maximum in the Cycle of 1…

TSINGSEE青犀算法中台消防通道堵塞/占压AI检测算法的介绍及应用

消防通道是建筑物内用于紧急疏散的通道&#xff0c;其畅通无阻对于保障人员生命安全至关重要。然而&#xff0c;由于各种原因&#xff0c;消防通道经常会被杂物、车辆等堵塞&#xff0c;一旦发生火灾等紧急情况&#xff0c;后果不堪设想。为了有效解决这一问题&#xff0c;我们…

去除【关注博主即可阅读全文】插件

这两天闲着没事看csdn&#xff0c;看到好多博主弄这个关注才可以看文章 正好好久没写过那个油猴的插件&#xff0c;今天就用油猴写个这玩意。大家可以试着玩 代码我贴下面了&#xff0c;想用自取啊 // UserScript // name 去除关注才可以阅读 // namespace http:/…