RedisTemplate 导入pom文件本文章是跟着黑马程序员的课程记录的查看连接
编写配置文件org.springframework.boot spring-boot-starter-data-redis org.apache.commons commons-pool2 com.fasterxml.jackson.core jackson-databind
spring:
redis:
host: 192.168.150.101
port: 6379
password: 123321
lettuce:
pool:
max-active: 8 # 最大连接
max-idle: 8 # 最大空闲连接
min-idle: 0 # 最小空闲连接
max-wait: 100 # 连接等待时间
自定义序列化方式
RedisTemplate可以接受任意Object作为值写入Redis,写入之前会把Object序列化为字节形式,默认是采用JDK序列化,这种序列化之后的结果不完全是我们想要的格式,所以需要自定义序列化方式
@Bean public RedisTemplate编写测试类redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { // 创建Template RedisTemplate redisTemplate = new RedisTemplate<>(); // 设置连接工厂 redisTemplate.setConnectionFactory(redisConnectionFactory); // 设置序列化工具 GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer(); // key和 hashKey采用 string序列化 redisTemplate.setKeySerializer(RedisSerializer.string()); redisTemplate.setHashKeySerializer(RedisSerializer.string()); // value和 hashValue采用 JSON序列化 redisTemplate.setValueSerializer(jsonRedisSerializer); redisTemplate.setHashValueSerializer(jsonRedisSerializer); return redisTemplate; }
// 自动注入RedisTemplate
@Autowired
private RedisTemplate redisTemplate;
// 测试方法
@SpringBootTest
public class RedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
void testString() {
// 插入一条string类型数据
redisTemplate.opsForValue().set("name", "李四");
// 读取一条string类型数据
Object name = redisTemplate.opsForValue().get("name");
System.out.println("name = " + name);
}
}
StringRedisTemplate
因为RedisTemplate序列化时会存储类的全路径,会造成内存的开销
所以Spring默认提供了StringRedisTemplate类,它的key和value的序列化方式默认是String方式.省去了我们自定义RedisTemplate的过程
@Autowired
private StringRedisTemplate stringRedisTemplate;
// JSON工具
@SpringBootTest
public class RedisTest {
@Autowired
private StringRedisTemplate stringRedisTemplate;
// JSON工具
private static final ObjectMapper mapper = new ObjectMapper();
@Test
public void test01() throws JsonProcessingException {
User user = new User();
user.setName("zhangsan");
user.setAge(23);
// 手动序列化
String json = mapper.writevalueAsString(user);
// 添加到redis中
stringRedisTemplate.opsForValue().set("user:001", json);
// 从redis中读取
String val = stringRedisTemplate.opsForValue().get("user:001");
// 反序列化
User user1 = mapper.readValue(val, User.class);
System.out.println(user1);
System.out.println(user1.getName());
}
}



