Skip to content

Commit eb6c931

Browse files
朱晔朱晔
authored andcommitted
更新 RedisTemplate 获取 Long的问题
1 parent 668b7dc commit eb6c931

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/main/java/org/geekbang/time/commonmistakes/serialization/redistemplate/CommonMistakesApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.geekbang.time.commonmistakes.serialization.redistemplate;
22

3+
import com.fasterxml.jackson.databind.DeserializationFeature;
34
import com.fasterxml.jackson.databind.ObjectMapper;
45
import org.springframework.boot.SpringApplication;
56
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -22,6 +23,7 @@ public <T> RedisTemplate<String, T> redisTemplate(RedisConnectionFactory redisCo
2223
redisTemplate.setConnectionFactory(redisConnectionFactory);
2324
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
2425
ObjectMapper objectMapper = new ObjectMapper();
26+
objectMapper.enable(DeserializationFeature.USE_LONG_FOR_INTS);
2527
//把类型信息作为属性写入Value
2628
objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL);
2729
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);

src/main/java/org/geekbang/time/commonmistakes/serialization/redistemplate/RedisTemplateController.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,21 @@ public void wrong2() {
6363
String key = "testCounter";
6464
countRedisTemplate.opsForValue().set(key, 1L);
6565
log.info("{} {}", countRedisTemplate.opsForValue().get(key), countRedisTemplate.opsForValue().get(key) instanceof Long);
66+
Long l1 = getLongFromRedis(key);
67+
countRedisTemplate.opsForValue().set(key, Integer.MAX_VALUE + 1L);
68+
log.info("{} {}", countRedisTemplate.opsForValue().get(key), countRedisTemplate.opsForValue().get(key) instanceof Long);
69+
Long l2 = getLongFromRedis(key);
70+
log.info("{} {} {}", l1, l2);
71+
}
72+
73+
private Long getLongFromRedis(String key) {
74+
Object o = countRedisTemplate.opsForValue().get(key);
75+
if (o instanceof Integer) {
76+
return ((Integer) o).longValue();
77+
}
78+
if (o instanceof Long) {
79+
return (Long) o;
80+
}
81+
return null;
6682
}
6783
}

0 commit comments

Comments
 (0)