栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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.导入依赖;


    
        org.springframework.boot
        spring-boot-starter-data-redis
        
            
                io.lettuce
                lettuce-core
            
        
    
    
    
        redis.clients
        jedis
    

 

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 page = new Page<>(query.getPage(),query.getRows());
    List dtoList = courseMapper.selectAddPage(page, query);
    return JSONResult.success(new PageList(page.getTotal(),dtoList));
}

 

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号