缓存

本地缓存

本地缓存为了保证线程安全问题,一般使用ConcurrentMap的方式保存在内存之中

分布式缓存。

常见的分布式缓存则有Redis,MongoDB等。

  • 一致性:本地缓存由于数据存储于内存之中,每个实例都有自己的副本,可能会存在不一致的情况;分布式缓存则可有效避免这种情况
  • 开销:本地缓存会占用JVM内存,会影响GC及系统性能;分布式缓存的开销则在于网络时延和对象序列化,故主要影响调用时延
  • 适用场景:本地缓存适用于数据量较小或变动较少的数据;分布式缓存则适用于一致性要求较高及数量量大的场景(可弹性扩容)
    本地缓存适用于数据量较小或变动较少的数据,因为变动多需要考虑到不同实例的缓存一致性问题,而数据量大则需要考虑缓存回收策略及GC相关的问题

Guava cache

Guava Cache 是Google Fuava中的一个内存缓存模块,用于将数据缓存到JVM内存中。

提供了get、put封装操作,能够集成数据源 ;
线程安全的缓存,与ConcurrentMap相似,但前者增加了更多的元素失效策略,后者只能显示的移除元素;
Guava Cache提供了多种基本的缓存回收方式
监控缓存加载/命中情况
通常,Guava缓存适用于以下情况:

  • 愿意花费一些内存来提高速度。
  • 使用场景有时会多次查询key。
  • 缓存将不需要存储超出RAM容量的数据

https://blog.csdn.net/why_still_confused/article/details/107138230

项目中应用

配置Guava缓存

@Configuration
@EnableCaching
public class GuavaConfig {/*** 默认过期时间60S*/private final int DEFAULT_TIME_OUT = 60;/*** 默认缓存最大个数500*/private final int DEFAULT_MAXSIZE = 500;@Beanpublic CacheManager cacheManager() {GuavaCacheManager cacheManager = new GuavaCacheManager();cacheManager.setCacheBuilder(CacheBuilder.newBuilder().expireAfterWrite(DEFAULT_TIME_OUT, TimeUnit.SECONDS).maximumSize(DEFAULT_MAXSIZE));return cacheManager;}}

使用

在controller的方法上使用,如果一分钟内相同的参数进行请求,都使用的是guava缓存中的内容,

    /** *  如果一分钟内相同的参数进行请求,都使用的是guava缓存中的内容,*  这里配置的key和value* @param: ids* @param: departmentId * @return: AppDataResult<List<Object>> * @date: 2021/9/29*/ @GetMapping("queryUserList")@Cacheable(value = "user", key = "'api/user.ids:'.concat(#ids == null ? '' :#ids)" +".concat('&departmentId:').concat(#departmentId == null ? '' : #departmentId.toString())" )public AppDataResult<List<Object>> queryUserList(@RequestParam String ids,Long departmentId) {//.......return null;}

以上

在controller的方法上使用,如果一分钟内相同的参数进行请求,通过以上方法可大幅度提高接口请求效率,但是有一定的缓冲时间,数据可能不一致,要注意数据时效性
在controller的方法上使用,如果一分钟内相同的参数进行请求,通过以上方法可大幅度提高接口请求效率,但是有一定的缓冲时间,数据可能不一致,要注意数据时效性、
在controller的方法上使用,如果一分钟内相同的参数进行请求,通过以上方法可大幅度提高接口请求效率,但是有一定的缓冲时间,数据可能不一致,要注意数据时效性

「IT女神勋章」挑战赛#相关推荐

  1. 为「IT女神勋章」而战

    大家好,我是空空star,今天为「IT女神勋章」而战 文章目录 前言 一.IT女神勋章 二.绘制爱心 1.html+css+js 来源:一行代码 代码 效果 2.python 来源:C知道 代码 效果 ...

  2. 【IT女神勋章挑战赛名单公布】:看看谁获奖啦!

    致敬女性开发者,为那些IT女神而战!「IT女神勋章挑战赛」已落下帷幕,博主们的比拼结果也已新鲜出炉,快来看看此次征文中,有哪些精彩文章不容错过! 活动官网:https://activity.csdn. ...

  3. 腾讯极客挑战赛正式开赛!「鹅罗斯方块」开“玩”啦

    燃爆盛夏,「腾讯极客挑战赛」巅峰对决竞技场现已开启! 极客对决,等你前来! 点击[阅读原文],即刻报名参赛 勇夺offer名额和万元奖品!

  4. 论文无法复现「真公开处刑」,PapersWithCode上线「论文复现报告」

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨机器之心 编辑丨极市平台 导读 近日,机器学习资源网站 Pap ...

  5. 猪心移植人体背后竟有个川妹子!36岁哈佛女学霸敲除猪致病基因,获赞「基因剪刀手」...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 编辑:桃子 时光 好困 [导读]几天前,美国57岁男子成功接受了转基因猪心的移植手术. ...

  6. 哥德尔90年前的「不完备性定理」,奠定了计算机与AI的理论基础

    大神早已远去,而他的光芒仍在人间. 1931 年,奥地利裔美国著名数学家库尔特 · 哥德尔(Kurt Gödel)在一篇论文<Über formal unentscheidbare Sätze ...

  7. 多模态语义分析_「CV学霸开讲」卷积神经网络压缩、多模态的语义分析研究

    原标题:「CV学霸开讲」卷积神经网络压缩.多模态的语义分析研究 [新智元导读]2017年度百度奖学金10位候选人中,人大的陈师哲和北大的王云鹤所学专业主要集中在计算机视觉,本文将详细呈现CV学子的求学 ...

  8. 特朗普近百条推文,被 Twitter 标记为「不实消息」

    By 超神经 内容提要:自从 2016 年美国大选之后,各社交平台因虚假消息误导选民而备受批评.近几年来,Twitter 在消除虚假信息上投入了大力气,最近晒出了今年的成果. 关键词:Twitter ...

  9. 斯坦福「AI百年研究」首份报告:2030年的人工智能与生活

    斯坦福「AI百年研究」首份报告:2030年的人工智能与生活 2014 年秋季,人工智能百年研究(One Hundred Year Study)项目启动,这是一项对人工智能领域及其对人类.社区.社会影响 ...

最新文章

  1. ORACLE常用的动态性能视图
  2. 每天一道LeetCode-----生命游戏
  3. 解决pycharm安装包过程出现的问题:module 'pip' has no attribute 'main'
  4. $(document).ready(); $().ready(); $()
  5. 网络分流器|运营商光纤延距解决方案
  6. easy ui dialog 关闭之后的怪异问题
  7. 父亲节,程序员几条代码硬核示爱
  8. EasyUI 的Tab 标签添加右键菜单
  9. 代码织入 android,这可能是Android最傻瓜式的AOP框架
  10. C++超市管理系统(直接可以运行)
  11. Max Core Frequency 异常显示为-1.80GHz -- Intel-Extreme-Tuning-Utility-Intel-XTU (英特尔 XTU)
  12. 模块四:应急预案参考模板
  13. 创新设计思维---自学报告
  14. Relatively Prime Pairs
  15. JAVA 生成二维码 并设置 +失效机制
  16. Mysql增加传输数据量或连接时间,防止mysql server has gone away报错
  17. 观张国荣的电影《霸王别姬》有感
  18. php ar技术,vr和ar是什么技术,有什么区别
  19. Thinking_2_酸甜苦辣咸的2016
  20. 问题:如何查询宇视摄像机/摄像头规格参数

热门文章

  1. 2008-09赛季NBA直播表(cctv5 广东体育)
  2. idea Maven阿里云仓库和阿里spring代理仓库配置
  3. vs 2010 sp1 中文版 安装sliverlight 5 正式版
  4. 129. 求根节点到叶节点数字之和
  5. python-英文字母的大小写转换
  6. Docker Compose方式安装GitLab
  7. 深入理解Java虚拟机之Java类加载机制,Java类实例化过程详解。
  8. 高德地图截屏、标记鼠标跟随示例
  9. C++ Struct(结构体)详解
  10. 设置页面左右结构(其中一端自适应)