小编Noe*_*oel的帖子

如何使用redis序列化Java Instant类型

我正在使用 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即时类型?

任何意见将不胜感激。

java spring instant redis

5
推荐指数
1
解决办法
1965
查看次数

标签 统计

instant ×1

java ×1

redis ×1

spring ×1