java自己处理的redis键值,可以自己序列化
让redis中名称正常显示,(可以为python等其程序使用)

import com.zykj.speech.domain.Site;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
//json序列化和Serializer序列化的区别貌似是:json序列化是转为json字符串,这个过程不需要类实现序列化接口。而且jsno序列化可作用于任何对象。
//Serializer序列化器和实现序列化接口,是为了让类能够网络传输和保存到内存或硬盘,可以理解为可以让类变成以字节数组形式存在。很多类比如String是已经实现了此接口的。
@Configuration
public class RedisConfig {
//查看源码可发现IOC里自动注入了一个redisTemplate和StringRedisTemplate,并且有onmissclasscondition,所以这里注入了则使用我们自己的
//使用了StringRedis的序列化器,可以直接
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
RedisTemplate<String,Object> template=new RedisTemplate<>();
//关联
template.setConnectionFactory(factory);
//设置key的序列化器
template.setKeySerializer(new StringRedisSerializer());
//设置value的序列化器,这种是专门给字符串用的序列化
template.setValueSerializer(new StringRedisSerializer());
return template;
}
//针对类对象,可以将对象存储到redis当中(当然也可以使用对象json序列化的方式,来存储对象的json字符串)
@Bean
public RedisTemplate<String, Site> imageRedisTemplate(RedisConnectionFactory factory){
RedisTemplate<String,Site> template=new RedisTemplate<>();
//关联
template.setConnectionFactory(factory);
//设置key的序列化器
template.setKeySerializer(new StringRedisSerializer());
//设置value的序列化器,这种是专门给imageInfo用的序列化器
template.setValueSerializer(new Jackson2JsonRedisSerializer<>(Site.class));
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(Site.class));
return template;
}
}
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
35
36
37
38
39
40
41
42
43
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
35
36
37
38
39
40
41
42
43