springboot~redisson中使用lua脚本的问题

这篇具有很好参考价值的文章主要介绍了springboot~redisson中使用lua脚本的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

起因

事情是这样的,我在通过redission进行限流时,用到了在lua脚本里进行数值计算,而我在本地测试过程中,发现所有tonumber()方法时,返回值都是nil,这个原因最后找到了,是没有配置序列化的方式,出现错误提示如下:

org.redisson.client.RedisException: ERR Error running script (call to f_189758df5f16d279fa4852c3ee51f702e4ea0414): @user_script:1: user_script:1: attempt to perform arithmetic on a nil value . channel: [id: 0x850f178a, L:/127.0.0.1:54544 - R:localhost/127.0.0.1:6379] command: (EVAL), promise: java.util.concurrent.CompletableFuture@2f42a4b1[Not completed, 1 dependents], params: [return tonumber(ARGV[1]) + tonumber(ARGV[2]), 1, a, PooledUnsafeDirectByteBuf(ridx: 0, widx: 2, cap: 256), PooledUnsafeDirectByteBuf(ridx: 0, widx: 2, cap: 256)]

解决方法

找到了原因,解决就变得很容易了,我们添加jackson序列化就可以了

        Config config = new Config();
		config.useSingleServer().setAddress("redis://localhost:6379");
		// 创建JsonJacksonCodec对象,并设置为Redisson的默认编码解码器,不配置的话,你的数字和字段会基于二进制存储,不方便查看
		JsonJacksonCodec codec = new JsonJacksonCodec();
		config.setCodec(codec);
		RedissonClient redisson = Redisson.create(config);

lua测试代码

    @Test
	public void luaComputerparam2() {
		// 定义Lua脚本
		String luaScript = "return  tonumber(ARGV[1]) + tonumber(ARGV[2])"; //这块是需要配置序列化的,不配置总是为nil
		// 执行Lua脚本并获取结果
		RScript script = redisson.getScript();
		Long result = script.eval(RScript.Mode.READ_ONLY, luaScript, RScript.ReturnType.INTEGER,
				Collections.singletonList("a"), 1,3);
		System.out.println("计算结果:" + result);
	}

springboot~redisson中使用lua脚本的问题文章来源地址https://www.toymoban.com/news/detail-591552.html

到了这里,关于springboot~redisson中使用lua脚本的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot+Redis执行lua脚本

            随着Redis数据库的广泛应用,它在服务器端应用程序中的作用越来越重要。Redis具有快速读写、数据持久化、发布订阅、事务处理等诸多特性,而这些特性使得它在处理高并发、实时数据操作等方面表现出色。然而,单纯使用Redis还不足以满足一些复杂业务逻辑的需

    2024年02月09日
    浏览(31)
  • springboot第44集:Kafka集群和Lua脚本

    servers :Kafka服务器的地址。这是Kafka集群的地址,生产者将使用它来发送消息。 retries :在消息发送失败时,生产者将尝试重新发送消息的次数。这个属性指定了重试次数。 batchSize :指定了生产者在发送消息之前累积的消息大小(以字节为单位)。一次性发送多个消息可以

    2024年02月07日
    浏览(30)
  • Lua脚本解决多条命令原子性问题

    Redis是一个流行的键值存储数据库,它提供了丰富的功能和命令。在Redis中,我们可以使用Lua脚本来编写多条命令,以确保这些命令的原子性执行。Lua是一种简单易学的编程语言,下面将介绍如何使用Redis提供的调用函数来操作Redis并保证原子性。 首先,让我们来了解一下Lua脚

    2024年02月14日
    浏览(29)
  • 【实战】使用Lua脚本怎么清理redis中的数据【实战】使用Lua脚本怎么清理redis中的数据

    首先我们通过hiredis 向redis 中写入了数据,这里我们主要以测试为目的,所以,Key 值设定为毫秒级时间戳。 但是当我们测试完成之后,需要验证实际情况,这里我们直接使用redis-cli 登录数据库看看。 本次测试完成,接下来要结合业务开始测试,需要清理数据库,但是一条一

    2024年02月13日
    浏览(77)
  • 使用lua脚本操作redis

    redis中实现事务有两种方法: 1.WATCH监视键的变动,然后MULTI开始事务,EXEC提交事务 WATCH key [key…]:监视一个或多个键,如果在事务执行之前被修改,则事务被打断。 MULTI:标记一个事务的开始。 EXEC:执行事务中的所有命令。 DISCARD:取消一个事务,放弃执行事务中的所有命

    2024年02月16日
    浏览(34)
  • lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合

    lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合 7.0点赞功能-定时持久化到数据库-lua脚本的编写_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1bu411j75u 这个脚本主要是放到Springboot工程里的, 这里如果是向放到字段控制台执行,那就要加入 eval 以及其他参数:

    2024年02月13日
    浏览(34)
  • 【Redis 开发】分布式锁中的常见问题和Lua脚本

    分布式锁中我们设置的过期时间: 如果有一个线程获取锁之后在进行操作时,到达了锁的过期时间,之后就会有别的线程获得锁,如果这时,第一个线程执行完成后释放锁,就会将第二个锁的线程删除 针对这个情况如何改进: 在获取锁时存入线程标示(可以用UUID) 在释放

    2024年04月28日
    浏览(32)
  • Redis命令行使用Lua脚本

    Lua脚本在Redis中的使用非常有用,它允许你在Redis服务器上执行自定义脚本,可以用于复杂的数据处理、原子性操作和执行多个Redis命令。以下是Lua脚本在Redis中的基本使用详细讲解: 运行Lua脚本: 在Redis中,你可以使用 EVAL 或 EVALSHA 命令来运行Lua脚本。 EVAL 用于执行未经缓存

    2024年02月07日
    浏览(36)
  • Qt 使用QScintilla 编辑lua 脚本

    需求: 利用QScintilla 编辑lua 脚本 步骤: 1,下载 QScintilla Riverbank Computing | Download 2,   打开 src/qscintilla.pro 文件 编译出 dll库 3,工程中引入这个库 注意debug 模式 必须加载debug 版本编译的库,不然回提示 ”QWidget: Must construct a QApplication before a QWidget“ 4,使用 5,效果

    2024年02月19日
    浏览(20)
  • 安装luajit及使用python运行lua脚本

      使用Python运行lua脚本前,需要先安装LuaJIT,LuaJIT的官网是下载 (luajit.org) 目前已不再使用.exe文件的下载方式,需要使用Git从公共仓库下载源码,git命令为: 下载后源码文件夹会保存到git设置的路径下 ,随后再打开官网的安装教学界面安装 (luajit.org)   根据官网提示,Wind

    2024年02月22日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包