热爱技术,追求卓越
不断求索,精益求精

redisson的RMap出现类型转换错误java.lang.ClassCastException解决办法

使用redisson的RMap缓存HashMap出现java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer的异常,代码如下:

@Autowired
private RedissonClient redisson;
/**
 * 下面的代码会报错
 */
@Test
public void testRedissonMap(){
	try {
		String mapGroup = "TEST_MAP_GROUP_2";
		String key = "TEST_KEY_2";
	
		RMap<String, Map<Integer, Integer>> rMap = redisson.getMap(mapGroup);
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
		for(int i = 0; i < 10; i++){
			map.put(i, i);
		}
		rMap.put(key, map);
		map = rMap.get(key);
		map.forEach(new BiConsumer<Integer, Integer>() {
			@Override
			public void accept(Integer t, Integer u) {
				System.out.println("数据集:" + t + "," + u);
			}
		});
	} catch (Exception e) {
		e.printStackTrace();
	}
}

上面的代码出现异常是在较低版本的redisson,我最开始使用的版本是3.8.0出现上面的错误,后来在github提交issue:

https://github.com/redisson/redisson/issues/2025

升级redisson版本为目前最新版本3.10.5后,不再报错,可正常使用。出现此问题的朋友可以考虑升级最新的redisson版本。

赞(1)
未经允许不得转载:LoveCTO » redisson的RMap出现类型转换错误java.lang.ClassCastException解决办法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

热爱技术 追求卓越 精益求精