我正在使用 spring boot 2.0.3 和 spring-boot-starter-data-redis。还使用 jackson-datatype-jsr310。
我想将对象存储到redis中。
对象(MyObj):
String text;
Instant instant;
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
@Test
public void test() {
ListOperations<String, MyObj> listOps = redisTemplate.opsForList();
MyObj o1 = new MyObj();
o1.setText("foo");
o1.setInstant(Instant.now());
listOps.leftPush("foo", o1);
MyObj o2 = new MyObj();
o2.setText("bar");
o2.setInstant(Instant.now());
listOps.leftPush("foo", o2);
List<MyObj> list = listOps.range("foo", 0, -1);
for (MyObj o : list) {
System.out.println(o.getText());
System.out.println(o.getInstant());
}
}
Run Code Online (Sandbox Code Playgroud)
在我的 RedisConfig 中:
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
Run Code Online (Sandbox Code Playgroud)
但是当我推入redis时,出现以下错误:
org.springframework.data.redis.serializer.SerializationException:无法读取JSON:无法构造实例
java.time.Instant(不存在创建者,如默认构造):无法从对象值反序列化(没有基于委托或属性的创建者)
如何使用Redis序列化java即时类型?
任何意见将不胜感激。