SpringRedisTemplate 使用
导入Maven依赖
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
|
配置Redis数据源
1 2 3 4 5 6
| spring: redis: host: localhost port: 6379 password: 123456 database: 0
|
编写配置类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| @Configuration public class RedisConfiguration {
@Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<Object, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); template.setDefaultSerializer(new GenericJackson2JsonRedisSerializer()); return template; } }
|
这里采用了JSON序列化来代替默认的JDK序列化方式。最终结果如图:

整体可读性有了很大提升,并且能将Java对象自动的序列化为JSON字符串,并且查询时能自动把JSON反序列化为Java对象。不过,其中记录了序列化时对应的class名称,目的是为了查询时实现自动反序列化。这会带来额外的内存开销。
StringRedisTemplate + 手动序列化
为了在反序列化时知道对象的类型,JSON序列化器会将类的class类型写入json结果中,存入Redis,会带来额外的内存开销。
为了减少内存的消耗,我们可以采用手动序列化的方式,换句话说,就是不借助默认的序列化器,而是我们自己来控制序列化的动作,同时,我们只采用String的序列化器,这样,在存储value时,我们就不需要在内存中就不用多存储数据,从而节约我们的内存空间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| @SpringBootTest class RedisStringTests {
@Autowired private StringRedisTemplate stringRedisTemplate;
@Test void testString() { stringRedisTemplate.opsForValue().set("verify:phone:13600527634", "124143"); Object name = stringRedisTemplate.opsForValue().get("name"); System.out.println("name = " + name); }
private static final ObjectMapper mapper = new ObjectMapper();
@Test void testSaveUser() throws JsonProcessingException { User user = new User("虎哥", 21); String json = mapper.writeValueAsString(user); stringRedisTemplate.opsForValue().set("user:200", json);
String jsonUser = stringRedisTemplate.opsForValue().get("user:200"); User user1 = mapper.readValue(jsonUser, User.class); System.out.println("user1 = " + user1); }
}
|

redis客户端
RedisTemplate、StringRedisTemplate: 操作redis的工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency>
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>
|
配置参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| spring: data: redis: host: 8.138.192.185 password: 123456 port: 6379 database: 0 lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: 1000ms
|