0703~分布式缓存~课程微服务搭建

 @JsonInclude(JsonInclude.Include.NON_EMPTY) 加上此注解可以消除子类后面的空数据,如下:

使用之后效果如下:

 分布式缓存:在查询数据量大的页面加载会很慢,这时可以把查询的数据放入缓存里,提高查询效率;

如何保持缓存与数据的一致性:新增/修改/删除业务功能完成后,删除缓存数据,缓存后删,以保持缓存与数据的一致性;

用户查询步骤:

1.用户访问首页,查询页面先去缓存中拿;

2.缓存中有数据,直接返回给前端;

3.缓存中没有数据,去数据库中拿,返回给前端.并备份一份数据到缓存中;

实现方式有两种:

1.直接使用redis,把数据存入redis中;

2.使用springcache实现(注解版,也是存入redis中);

springcache:

1.导入依赖;

2.yml配置redis参数

3.启动类添加注解@EnableCaching;

4.需要在做缓存的方法上加注解

@Cacheable(cacheNames = "coursrTypeTreeData",key = "'coursrTypeTreeData'")注意有两个单引号

5.需保持缓存与数据的一致性,在新增/修改/删除方法上加上注解

@CacheEvict(cacheNames = "coursrTypeTreeData",key = "'coursrTypeTreeData'")

1.导入依赖;

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <exclusions>
            <exclusion>
                <groupId>io.lettuce</groupId>
                <artifactId>lettuce-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!--springboot2.0以后data-redis底层使用的是lettuce,可以更换成jedis-->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
    </dependency>
</dependencies>

 

2.yml配置redis参数

 

redis:
  database: 0
  host: 127.0.0.1
  port: 6379
  jedis:
    pool:
      max-wait: 2000ms
      min-idle: 2
      max-idle: 8

3.启动类添加注解@EnableCaching;

 

@SpringBootApplication
@EnableEurekaClient
@EnableCaching
public class hrm_course_server_1070App {
    public static void main(String[] args){
        SpringApplication.run(hrm_course_server_1070App.class, args);
    }

}

 4.需要在做缓存的方法上加注解

@Override
@Cacheable(cacheNames = "coursrTypeTreeData",key = "'coursrTypeTreeData'")
public JSONResult treeData() {

5.需保持缓存与数据的一致性,在新增/修改/删除方法上加上注解

 

@PostMapping(value="/save")
@CacheEvict(cacheNames = "coursrTypeTreeData",key = "'coursrTypeTreeData'")
public JSONResult save(@RequestBody CourseType courseType){
@DeleteMapping(value="{id}")
@CacheEvict(cacheNames = "coursrTypeTreeData",key = "'coursrTypeTreeData'")
public JSONResult delete(@PathVariable("id") Long id){

 开启驼峰自动转换:

configuration:
    map-underscore-to-camel-case: true #开启驼峰大小写自动转换
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启控制台sql输出

 前端课程上下线思路:

 

 1.通过前端传过来的id拿到对象;

2.通过对象,给对象状态赋值;

3.修改状态后返回给前端;

 

@Override
public JSONResult onLineCourse(CourseQuery query) {
    //上下线
    //思路
    //1.通过前端传过来的id拿到对象;
    //2.拿到对象给对象设置状态;
    //3.修改返回即可;
    Long[] ids = query.getIds();
    for (Long id : ids) {
        Course course = courseMapper.selectById(id);
        course.setStatus(1);
        courseMapper.updateById(course);
    }
    return JSONResult.success();
}

分页查询所有思路;

1.通过page进行分页;

2.通过sql查出对象集合,把page和query传进去;

3.封装pageList返回给前端;

 

//分页查询所有
@Override
public JSONResult selectAddPage(CourseQuery query) {
    Page<CourseDto> page = new Page<>(query.getPage(),query.getRows());
    List<CourseDto> dtoList = courseMapper.selectAddPage(page, query);
    return JSONResult.success(new PageList<CourseDto>(page.getTotal(),dtoList));
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值