【jeecg-boot】:jeecg-boot使用redis存储的数据如何用jfinal的redis插件进行操作获取

场景:使用jeecg-boot作为应用系统,使用redis作为缓存,使用jfinal实现物联网数据的存储和获取,有时候会用到jeecg-boot中redis存储的数据,那么就会报一下错误:

		RedisPlugin redisPlugin = new RedisPlugin("xishuai", "127.0.0.1", 6379, "root");
		
		redisPlugin.setSerializer(new JdkSerializer());
		redisPlugin.start();

		Redis.use().get("scems::iotdatasource::customerIde2a3a209094dc18fd0fe1d3a3e8d623e");

报错:

Exception in thread "main" java.lang.RuntimeException: java.io.StreamCorruptedException: invalid stream header: 22736365
	at com.jfinal.plugin.redis.serializer.JdkSerializer.valueFromBytes(JdkSerializer.java:78)
	at com.jfinal.plugin.redis.Cache.valueFromBytes(Cache.java:1217)
	at com.jfinal.plugin.redis.Cache.get(Cache.java:91)
	at org.xishuai.dpu.sav.AppTest.main(AppTest.java:130)
Caused by: java.io.StreamCorruptedException: invalid stream header: 22736365
	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:862)
	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:354)
	at com.jfinal.plugin.redis.serializer.JdkSerializer.valueFromBytes(JdkSerializer.java:74)
	... 3 more

经查,原因如下:

参考jfinal官网一博文:

http://www.jfinal.com/share/225

总的原因就是存储的时候没有进行序列化,但是获取的时候用的fst方式进行反序列化,所以会出现问题,那么遇到问题怎么解决呢,

参考博文里的方式:

直接用Redis.use().getJedis();

获得jedis对象后,通过jedis进行操作,但是有个问题就是需要自己用完后关闭jedis对象,否则占用的资源部进行释放,导致资源不够

代码如下:

try {
  String kv = jedis.get("scems::iotdatasource::customerIde2a3a209094dc18fd0fe1d3a3e8d623e");
}finally {
 Redis.use().close(jedis);
}

经测试,多线程操作资源没问题!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值