Git管理现有项目
- 提交步骤:
- 生成空仓库, 不要加任何文件
- 右键项目, add整个项目
- commit和push, push时添加远程仓库地址
- 新建分支步骤:
- 在本地新建一个分支
- push
环境搭建
maven坐标
<!-- Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
yml配置文件
spring:
redis:
host: localhost
port: 6379
# password:
database: 0
配置类
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
//默认的Key序列化器为:JdkSerializationRedisSerializer
redisTemplate.setKeySerializer(new StringRedisSerializer()); // key序列化
//redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); // value序列化
redisTemplate.setConnectionFactory(connectionFactory);
return redisTemplate;
}
}
缓存短信验证码
- 注入redis对象
@Autowired private RedisTemplate redisTemplate;
- 将验证码保存到redis, 有效期5分钟
redisTemplate.opsForValue().set(phone, code, 5, TimeUnit.MINUTES);
- 获取验证码, 登录成功后删除验证码
// 从redis中获取保存的验证码 Object codeInSession = redisTemplate.opsForValue().get(phone); // 登录成功则删除验证码 redisTemplate.delete(phone);
缓存菜品数据
- 获取缓存数据
List<DishDto> dishDtoList = null; // 动态构造key String key = "dish_"+dish.getCategoryId()+"_"+dish.getStatus(); // 先从redis中获取缓存数据 dishDtoList = (List<DishDto>) redisTemplate.opsForValue().get(key); if(dishDtoList != null){ // 如果存在, 直接返回, 无需查询数据库 return R.success(dishDtoList); } ... // 将查询到的菜品数据缓存到redis redisTemplate.opsForValue().set(key, dishDtoList);
- 删除缓存数据
// 清理所有菜品的缓存数据 // Set keys = redisTemplate.keys("dish_*"); // redisTemplate.delete(keys); // 清理某个分类下的菜品缓存数据 String key = "dish_"+dishDto.getCategoryId()+"_1"; redisTemplate.delete(key);
Spring Cache
介绍
- Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
- Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。
- CacheManager是Spring提供的各种缓存技术抽象接口。
- 针对不同的缓存技术需要实现不同的CacheManager:
CacheManager 描述 EhCacheCacheManager 使用EhCache作为缓存技术 GuavaCacheManager 使用Google的GuavaCache作为缓存技术 RedisCacheManager 使用Redis作为缓存技术
常用注解
注解 | 功能 |
---|---|
@EnableCaching | 开启缓存注解功能 |
@Cacheable | 在方法执行前spring先查看缓存中是否有数据, 如果有数据, 则直接返回缓存数据; 若没有数据, 调用方法并将方法返回值放到缓存中 |
@CachePut | 将方法的返回值放到缓存中 |
@CacheEvict | 将一条或多条数据从缓存中删除 |
- 在SpringBoot项目中, 使用缓存技术只需要在项目中导入相关缓存技术的依赖包, 并在启动类上使用
@EnableCaching
开启换成支持即可 - 例如, 使用Redis作为缓存技术, 只需要导入Spring data Redis的maven坐标即可
使用方式
maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
设置缓存有效期
cache:
redis:
time-to-live: 1800000 # 设置缓存有效期
注解
@CachePut(value = "userCache", key = "#user.id")
@CacheEvict(value = "userCache", key = "#user.id")
@Cacheable(value = "userCache", key = "#id", unless = "#result == null")
@Cacheable(value = "userCache", key = "#user.id+'_'+#user.name", unless = "#result == null")
注: @Cacheable的condition属性不能使用#result文章来源:https://www.toymoban.com/news/detail-546495.html
缓存套餐数据
@CacheEvict(value = "setmealCache", allEntries = true)
public R<String> save(@RequestBody SetmealDto setmealDto)
@Cacheable(value = "setmealCache", key = "#setmeal.categoryId+'_'+#setmeal.status")
public R<List<Setmeal>> list(Setmeal setmeal)
来源
黑马程序员. 瑞吉外卖项目文章来源地址https://www.toymoban.com/news/detail-546495.html
到了这里,关于JavaWeb_瑞吉外卖_项目优化Day10-Spring Cache的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!