当前位置: 首页 > news >正文

济南专业网站托管公司百度收录要多久

济南专业网站托管公司,百度收录要多久,有梦商城公司网站,网站用什么操作系统目录 通用缓存SpringCache 重要概念 导入依赖 开启缓存支持 编写UserInfoService 缓存Cacheable 发布视频清空缓存 通用缓存SpringCache 实现缓存逻辑有2种方式: 每个接口单独控制缓存逻辑 统一控制缓存逻辑Spring从3.1开始定义了org.springframework.cac…

目录

通用缓存SpringCache

重要概念

导入依赖

开启缓存支持

编写UserInfoService

缓存@Cacheable

发布视频清空缓存

通用缓存SpringCache

实现缓存逻辑有2种方式:

  1. 每个接口单独控制缓存逻辑

  2. 统一控制缓存逻辑Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发;

  • Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;

  • Cache接口下Spring提供了各种xxxCache的实现;如RedisCache,EhCacheCache ,ConcurrentMapCache等;

  • 每次调用需要缓存功能的方法时,Spring会检查检查指定参数的指定的目标方法是否已经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户。下次调用直接从缓存中获取。

  • 使用Spring缓存抽象时我们需要关注以下两点;

    1、确定方法需要被缓存以及他们的缓存策略

    2、从缓存中读取之前缓存存储的数据

内部使用AOP的形式,对redis操作进行简化

重要概念

名称解释
@Cacheable主要针对方法配置,能够根据方法的请求参数对其进行缓存
@CacheEvict清空缓存

入门案例

导入依赖

导入SpringDataRedis的依赖,并在application.yml中配置 (略)

开启缓存支持

然后在启动类注解@EnableCaching开启缓存

@SpringBootApplication
@EnableCaching  //开启缓存
public class DemoApplication{public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

编写UserInfoService

package com.tanhua.server.test;import com.tanhua.domain.db.UserInfo;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;@Service
public class UserInfoService {//根据id查询public UserInfo queryById(Long userId) {//从数据库查询UserInfo user = new UserInfo();user.setId(userId);user.setNickname("ceshi");return user;}//根据id修改public void update(Long userId) {UserInfo user = new UserInfo();user.setId(userId);user.setNickname("itcast");}
}

缓存@Cacheable

@Cacheable注解会先查询是否已经有缓存,有会使用缓存,没有则会执行方法并缓存。

@Cacheable(value = "user",key = "#userId")
public UserInfo queryById(Long userId) {//从数据库查询UserInfo user = new UserInfo();user.setId(userId);user.setNickname("ceshi");return user;
}

此处的value是必需的,它指定了你的缓存存放在哪块命名空间。

此处的key是使用的spEL表达式,参考上章。这里有一个小坑,如果你把methodName换成method运行会报错,观察它们的返回类型,原因在于methodNameStringmethohMethod

此处的User实体类一定要实现序列化public class User implements Serializable,否则会报java.io.NotSerializableException异常。

到这里,你已经可以运行程序检验缓存功能是否实现。

清除@CacheEvict

@CachEvict 的作用 主要针对方法配置,能够根据一定的条件对缓存进行清空 。

//根据id修改
@CacheEvict(value = "user",key = "#userId")
public void update(Long userId) {//修改用户UserInfo user = new UserInfo();user.setId(userId);user.setNickname("itcast");
}

视频列表缓存处理

修改VideoService,分页列表存入缓存,发布视频删除缓存

由于使用Reids缓存处理数据时,不能缓存ResponseEntity对象,所以需要修改方法返回值为

PageResult

@Cacheable(value="videoList",key="#page + '_' +  #pagesize")
public PageResult queryVideoList(Integer page, Integer pagesize) {//1、调用API查询 : PageReulst<Video>PageResult result = videoApi.findAll(page,pagesize);//2、获取分页中的list集合  List<Video>List<Video> items = (List<Video>)result.getItems();//3、循环视频列表,一个Video构造一个VoList<VideoVo> list = new ArrayList<>();for (Video item : items) {UserInfo userInfo = userInfoApi.findById(item.getUserId());VideoVo vo = VideoVo.init(userInfo, item);//从redis中获取,当前用户是否已经关注了视频发布作者String key = "followUser_"+UserHolder.getUserId()+"_"+item.getUserId();if (redisTemplate.hasKey(key)) {vo.setHasFocus(1);}list.add(vo);}//4、替换result中的item数据result.setItems(list);//5、构造返回值result;
}

发布视频清空缓存

//发布视频
@CacheEvict(value="videoList",allEntries = true)
public ResponseEntity saveVideo(MultipartFile videoThumbnail, MultipartFile videoFile) throws IOException {//1、图片上传到阿里云oss,获取请求地址String picUrl = ossTemplate.upload(videoThumbnail.getOriginalFilename(), videoThumbnail.getInputStream());//2、视频上传到fdfs上,获取请求地址String filename = videoFile.getOriginalFilename(); //xxxx.avi//获取文件后缀String sufix = filename.substring(filename.lastIndexOf(".")+1);StorePath storePath = client.uploadFile(videoFile.getInputStream(),videoFile.getSize(), sufix, null); //文件输入流,文件长度(大小),文件的后缀名,元数据(null)String videoUrl = webServer.getWebServerUrl() + storePath.getFullPath();//3、构建Video对象,并设置属性Video video = new Video();video.setPicUrl(picUrl);video.setVideoUrl(videoUrl);video.setText("传智播客是一个负责任的教育机构~"); //客户端未传递,手动模拟video.setUserId(UserHolder.getUserId());//4、调用api保存videoApi.save(video);//5、构建返回值return ResponseEntity.ok(null);
}
http://www.khdw.cn/news/46203.html

相关文章:

  • 做原型网站网站推广的基本方法为
  • 如何提高 网站的点击量百度搜索量统计
  • 网站开发栏目需求1央视新闻最新消息今天
  • 网站做的和别人一样违法吗搜索引擎营销的特点
  • 做音乐 交流网站深圳谷歌网络推广公司
  • 网站开发哪个更专业天津网络关键词排名
  • 单位建设网站河北网站建设案例
  • 做网站 怎么样找客户北京百度网站排名优化
  • 网站开发的认知seo培训费用
  • 做seo是要先有网站吗怎么给客户推广自己的产品
  • 淘宝网站做推广收费吗营销策划咨询
  • 内江网站怎么做seo金华百度推广公司
  • 衡水做网站找谁万网域名管理入口
  • 免费申请移动手机卡广州网站排名优化报价
  • 怎么用外网校内网站做英语汕头网站建设方案优化
  • 西宁网站建设高端一键生成网站
  • 做网站怎样赚钱站长工具域名查询社区
  • 建站素材网百度关键词流量查询
  • 旅游网站建设方案公司营销网站建设
  • 深圳福田房价网站网络排名优化方法
  • python做的网站如何部署成都百度推广联系方式
  • 东莞市网络策划推广哪家好长春seo公司哪家好
  • 政府网站页面设计排名前十的小说
  • 我想建个网站seo网站排名优化工具
  • 怎么制作网站详细教程视频哪里有专业的培训机构
  • 肥西县建设局拆迁办网站推广自己产品的文案
  • 做的很垃圾的网站百度推广客服电话多少
  • 个体营业执照株洲seo
  • 用自己的电脑做服务器建网站推广seo网站
  • 保险公司网站整合营销传播理论