1.引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.配置
#启动redis
#redis的数据库索引(默认为0)
spring.redis.database=2
#redis的服务器地址
spring.redis.host=127.0.0.1
#密码(没有就为空)
spring.redis.password=
#连接池的最大连接数
spring.redis.jedis.pool.max-active=2000
#连接池的最大阻塞等待时间(使用负值表示无限制)
spring.redis.jedis.pool.max-wait=-1
#连接池的最小空闲连接
spring.redis.jedis.pool.min-idle=50
#连接超时时间(毫秒)
spring.redis.timeout=1000
#集群模式配置
#spring.redis.cluster.nodes=106.54.79.43:7001,106.54.79.43:7002,106.54.79.43:7003,106.54.79.43:7004,106.54.79.43:7005,106.54.79.43:7006
3.自动装配的对象
@Autowired
StringRedisTemplate stringRedisTemplate;//仅支持字符串的数据
@Autowired
RedisTemplate redisTemplate;//支持对象的数据,但需要对对象进行序列化
4.序列化
什么是序列化?
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
为什么要序列化对象
把对象转换为字节序列的过程称为对象的序列化把字节序列恢复为对象的过程称为对象的反序列化
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig {
/**java项目www.fhadmin.org
* 对属性进行序列化和创建连接工厂
* @param connectionFactory
* @return
*/
@Bean
public RedisTemplate<String, Serializable> redisTemplate(LettuceConnectionFactory connectionFactory) {
RedisTemplate<String, Serializable> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setConnectionFactory(connectionFactory);
return template;
}
}
5.测试
//java项目www.fhadmin.org
@RequestMapping("/user")
@RestController
public class UserController {
@Autowired
StringRedisTemplate stringRedisTemplate;//仅支持字符串的数据
@Autowired
RedisTemplate redisTemplate;//支持对象的数据,前提需要进行序列化
@GetMapping
public User user(){
User user = new User();
user.setId("1");
user.setName("zhangshan");
user.setPhone("133333333");
//插入数据 stringRedisTemplate.opsForValue().set("1",user.toString());
redisTemplate.opsForValue().set("user",user);
// return stringRedisTemplate.opsForValue().get("1");
return (User)redisTemplate.opsForValue().get("user");
}
}