redisTemplate redis lua,attempt to compare two nil values, java.lang.IllegalStateException 解决方案,亲测可用

文章介绍了在使用RedisLua脚本时遇到的两个问题及其解决方案。一是尝试比较两个nil值,解决方法是确保使用正确的序列化器,如针对key-value使用setValueSerializer,对于hash使用setHashValueSerializer,并重新以新格式保存数据。二是Lua不支持integer类型,需将数据类型切换为long.class。示例代码展示了如何配置RedisTemplate以适应这些需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

attempt to compare two nil values问题解决

主要是因为redis lua 只支持json 格式保存 如果lua里面用到的是key value,就设置setValueSerializer,
如果lua里面用到的是hash,就设置setHashValueSerializer, 总之用到哪些就需要设置哪些
切记设置完之后原来的数据都删掉,用新的格式保存一下才可以

参考配置如下

在这里插入图片描述

@Bean
	public RedisTemplate<String, Object> redisTemplate(@Qualifier("lettuceConnectionFactory")LettuceConnectionFactory lettuceConnectionFactory) {
		Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
		RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
		redisTemplate.setKeySerializer(new StringRedisSerializer());
		redisTemplate.setHashKeySerializer(new StringRedisSerializer());
		redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
		redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
		redisTemplate.setConnectionFactory(lettuceConnectionFactory);
		return redisTemplate;
	}

java.lang.IllegalStateException问题解决

主要是因为lua 不支持integer 类型,切换成long.class即可

参考代码

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峡谷电光马仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值