Redis 的常用 Java 客户端:
- Jedis
- Lettuce
- Spring Data Redis
本文使用 Spring Data Redis。
1、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>3.4.0</version>
</dependency>
2、配置 Redis 数据源
spring:
redis:
host: localhost
port: 6379
password: 123456
database: 0 # 默认数据库0,Redis服务启动后默认有16个数据库,编号分别是从0到15
3、编写 Redis 相关配置类
@Configuration
@Slf4j
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
log.info("开始创建Redis模板对象...");
RedisTemplate redisTemplate = new RedisTemplate();
//设置Redis连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
//设置Redis键的序列化类
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}
4、使用
本例中使用 Redis 缓存菜品数据,只列出 Controller 层代码。
@RestController
@RequestMapping("/user/dish")
@Slf4j
@Api(tags = "C端-菜品浏览接口")
public class DishController {
@Autowired
private DishService dishService;
@Autowired
private RedisTemplate redisTemplate;
/**
* 根据分类id查询菜品
* @param categoryId
* @return
*/
@GetMapping("/list")
@ApiOperation("根据分类id查询菜品")
public Result<List<DishVO>> list(Long categoryId) {
// 查看是否有缓存数据,如果有,就不用去查数据库了
ValueOperations valueOperations = redisTemplate.opsForValue();
String key = "dish_" + categoryId;
List<DishVO> dishVOList = (List<DishVO>) valueOperations.get(key);
if (dishVOList != null && dishVOList.size() > 0) {
return Result.success(dishVOList);
}
Dish dish = new Dish();
dish.setCategoryId(categoryId);
dish.setStatus(StatusConstant.ENABLE); // 查询起售中的菜品
List<DishVO> list = dishService.listWithFlavor(dish);
// 把查询出来的菜品数据存入缓存
valueOperations.set(key, list);
return Result.success(list);
}
}
其它小知识,看看即可
Spring Boot 项目中,激活特定环境的配置,如下是激活dev环境的配置:
application.yml
spring:
profiles:
active: dev # SpringBoot会根据这一配置加载对应环境的专属配置,此处是dev环境
redis:
host: ${redis.host}
port: ${redis.port}
password: ${redis.password}
database: ${redis.database}
application-dev.yml:这里的配置就是dev环境的专属配置
redis:
host: localhost
port: 6379
password: 123456
database: 0 # 默认数据库0,Redis服务启动后默认有16个数据库,编号分别是从0到15
作用与机制:
-
环境隔离
Spring Boot 通过Profile机制实现多环境配置的隔离。例如,开发(
dev)、测试(test)、生产(prod)环境可能使用不同的数据库地址、端口等参数。spring.profiles.active指定激活的环境后,系统会自动加载对应环境的配置文件(如application-dev.yml),避免手动切换配置的繁琐
-
配置加载优先级
当设置了
spring.profiles.active: dev时:- 主配置文件(
application.yml)中的公共配置会被保留;
- 同时加载
application-dev.yml中的专属配置,同名属性会覆盖主配置。
- 主配置文件(