Google Guava Cache--localcache本地缓存实例

2023-10-28

何为缓存?本地缓存类似于map,当给定一个key,首先查找缓存中是否已经有值了,如果有则直接返回数据;相反如果不存在这样的key,则将新的内容value值缓存起来,以便下一次来查询,可以快速返回。

当然缓存不是说value值一直不变,会按照一定的失效策略来更新缓存中的数据。

缓存的常用使用场景有:

(1)在高并发的数据库访问时,为了抗住数据库并发连接压力,将数据缓存起来,当有请求过来,直接返回数据;

(2)当应用综的数据,更新周期较长,而且每次都查数据库的情况下,可以采用周期更新数据,从而有效减少数据库无效的访问,保证效率;


google的guava库中有实现了localcache的现成方法,可以在应用中快速构建本地缓存。

在缓存中,最为重要的失效策略和唯一key的确定;

基于时间的移除
      guava提供了两个基于时间移除的方法
      expireAfterAccess(long, TimeUnit)  这个方法是根据某个键值对最后一次访问之后多少时间后移除;
      expireAfterWrite(long, TimeUnit)    这个方法是根据某个键值对被创建或值被替换后多少时间移除;

[java]  view plain  copy
  1. import com.google.common.cache.Cache;  
  2. import com.google.common.cache.CacheBuilder;  
  3.   
  4. import java.util.concurrent.TimeUnit;  
  5.   
  6. /** 
  7.  * 本地缓存服务配置 
  8.  * User: jian-fei 
  9.  */  
  10. public class LocalContentCache {  
  11.     public final static long expireTime = 5;  //分钟  
  12.     public static Cache<String,Object> localContentCache = CacheBuilder.newBuilder().expireAfterAccess(  
[java]  view plain  copy
  1. expireTime,TimeUnit.MINUTES).build();  
  2. }  
[java]  view plain  copy
  1. //产生缓存唯一key的方法   
  2. public String generateLocalCacheKey(String model,String key){  
  3.         return model + "_" + key;  
  4.     }  
  5.   
  6.     public Object handle(final String model,final String key,final Object parmObject) {  
  7.         Object tx =  null;  
  8.         //从内部缓存读出key  
  9.         String cacheKey = generateLocalCacheKey(model,key);  
  10.         try{  
  11.             tx = LocalContentCache.localContentCache.get(cacheKey,new Callable<Object>() {  
  12.                 @Override  
  13.                 public Object call() throws Exception {  
  14.                     Object result = null;  
  15.                     //处理,获取缓存的value值  
  16.                     return result;  
  17.                 }  
  18.             });  
  19.         }catch (ExecutionException e){  
  20.             throw new RuntimeException(e);  
  21.         }  
  22.         return tx;  
  23.     }  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Guava Cache--localcache本地缓存实例 的相关文章

  • espcms5.7.13 sql注入漏洞复现

    espcms5 7 13 sql注入漏洞复现 作者 admin 时间 2021 06 28 分类 漏洞复现 使用代码审计工具自动审计 找到select语句 双击进入 adminsoft control citylist php文件可以看到
  • J-LINK 操作使用指南

    一 安装J LINK驱动 我们提供的驱动版本有v6 14d的版本 默认配置安装即可 安装完成后 将J LINK插入电脑在设备管理器中将会显示J LINK端口 二 固件下载及配置 J LINK安装完成后 进入J FLASH界面如下 配置J F
  • linux TTY子系统(2) -- 软件框架

    了解tty 子系统 1 TTY的子系统 在Linux kernel中 TTY就是各类终端 Terminal 的简称 为了简化终端的使用 以及终端驱动程序的编写 Linux kernel抽象出了TTY framework 对上 向应用程序提供
  • C语言 蓝桥杯 基础练习 01字串

    C语言 蓝桥杯 基础练习 01字串 描述 对于长度为5位的一个01串 每一位都可能是0或1 一共有32种可能 它们的前几个是 00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串 输入 输入描述
  • 边缘计算2.0时代,“云边缘”与“边缘云”你分清了吗?

    5G时代的来临 意味着整个世界的连接 计算 和沟通方式都将迎来巨大的改变 这样的改变挑战着每一个人对于未来的想象力 越来越多的 低时延 大带宽 业务需求将会涌现 与此同时 大规模的数据激增也给整个行业和企业带来了不小的挑战 2020年对于全
  • PS批量给图片加水印

    一 打开PS 导入图片 点击菜单栏 文件 打开 载入一张需要设置文字水印的图片 二 点击菜单栏 窗口 动作 打开Photshop的动作组工作台窗口 先点击新建组图标新建一个组类别 再点击新建动作图标新建一个动作 新建后自动开始录制 名称均为
  • Matlab中hold on与hold off的用法

    摘录自 https blog csdn net smf0504 article details 51830963 https www cnblogs com shuqingstudy p 4853936 html 一 hold指令使用 正常
  • Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码

    本文利用MyBatis jsp servlet html css javascript实现了一个简单的登录页面 对用户输入的用户名和密码就行校验 校验通过则登录成功 密码和用户信息保存在mysql表中 通过MyBatis访问 MyBatis
  • 【Redis】高并发下缓存穿透缓存雪崩解决方案

    高并发下缓存穿透缓存雪崩解决方案 高并发下缓存穿透 缓存雪崩的解决方案 缓存穿透及其解决方案 缓存雪崩及其解决方案 使用双重检查锁需要注意的点 高并发下缓存穿透 缓存雪崩的解决方案 缓存穿透及其解决方案 缓存穿透指的是在缓存系统中请求一个不
  • Java8之 LocalDate,LocalDateTime和处理时间、日期工具类一网打尽

    article details 128433011 1 java 支持日期格式化 2 获取今天日期 3 获取年 月 日信息 4 设置特定日期 5 判断两个日期是否相等 6 检查像信用卡还款这种周期性事件 7 获取当前时间 8 在现有的时间上
  • Git原理

    Git原理 一 版本控制系统 2 Git与SVN的区别 3 工作区 暂存区 本地仓库 远程仓库 3 暂存区 index 4 Git结构 Git 注意 常见命令 参考文献 一 版本控制系统 1 集中式版本控制系统 数据都保存在中央服务器 SV
  • [maven]关于pom文件中的<relativePath>标签

    关于pom文件中的
  • 每个 JavaScript 开发人员都应该知道的 7 个速记优化技巧

    每种语言都有自己的怪癖 最常用的编程语言JavaScript也不例外 本文将介绍大量JavaScript 速记优化技巧 这些技巧可以帮助您编写更好的代码 并确保您在遇到它们时不会做出以下反应 1 多字符串检查 通常您可能需要检查 astri
  • c++ string 堆还是栈_C++ GCC STL std::string实现 (短字符串优化)

    写在前面 本笔记介绍了C 11之后的GCC string的核心数据成员 以及短字符串的栈上优化 C 11之前与之后string的实现完全不同 这个SO回答写的很好 简而言之 c 11之前实现的是COW string C 11之后实现的就是实
  • C#系列-超市银行系统

    Acer cs using System using System Collections Generic using System Linq using System Text using System Threading Tasks n
  • 开源软件介绍说明

    https www oschina net project tag 81 db optimization
  • Android Thread.UncaughtExceptionHandler捕获

    在Java 的异常处理机制中 如果抛出的是Exception异常的话 必须有try catch 进行处理 属于checked exception 如果抛出的是RuntimeException异常的话 则不是必须进行try catch 异常处
  • C++ 使用ffmpeg将本地视频推送到远程服务器

    1 包含必须的头文件 extern C include
  • Qt-国际化(语言切换)

    在Qt中 所有的输入部件和文本绘制方式对Qt支持的所有语言都提供了内置的支持 Qt内置的字体引擎可以在同一时间正确而且精细地绘制不同的文本 这些文本可以包含来自众多不同书写系统的字符 如果想了解更多的相关知识 可以在帮助中通过Overvie
  • 人工智能的动作来看这四家:百度、谷歌、微软、Facebook

    人工智能的动作来看这四家 百度 谷歌 微软 Facebook 人工智能已经成了兵家必争之地 但说句实在话 也都是准备的姿势 不过 瞭望未来的AI大战 积极的人才 设施 技术储备都是刚需 近日 美国 财富 杂志 Fortune 发表题为 Wh

随机推荐

  • 按键开关机电路

    1 目标 今天我们利用MOS管来设计一个按键开关机电路 2 要求 长按按键2秒钟松开后 系统电源启动 再长按2秒钟后 系统电源切断 3 分析 该电路设计的开始阶段应该是一个逻辑问题 后期器件选型以及参数确定才是一个硬件问题 下面只分析逻辑问
  • 各大AI开放平台汇总分析

    AI开放平台已经成为企业重要的基础设施 各大公司都建立了自己的AI开放平台 除了BAT 科大讯飞的建设的四大AI开放平台外 各公司纷纷推出了自己的人工智能平台 AI平台介绍和汇总如下 不断更新中 目录 百度AI开放平台 阿里云人工智能平台
  • 八步成功组织项目启动会议

    八步成功组织项目启动会议 项目启动会议将首次公布项目计划 这在很大程度上决定了项目是否能够圆满完成 你应该充分利用这个机会来给团队鼓劲 提出适当的期望 并根据时间和预算建立有助于项目顺利完成的指导方针 如果没有很好的准备项目启动会议 则会从
  • 电磁流量计测流工作原理及优缺点

    电磁流量计包含变送器和传感器 它们共同测量流量 电磁流量计的传感器采用直通连接 可测量流体在流经管道时产生的感应电压 变送器测量传感器产生的电压 将该电压转换成流量 然后再将流量测量值传送到控制系统 工作原理 电磁流量计是根据法拉第电磁感应
  • c 语言 模板函数,在 C 语言中实现模板函数的方法

    http blog csdn net whinah article details 13815 2004 各种用 C 语言实现的模板可能在使用形式上有所不同 现以一个求和函数 Sum 为例 用 C Template 可写如下 templat
  • 51单片机——独立按键

    如图是独立按键的原理图 通电后io口都是高电平 当按下K1 k4后 io口接地 变为低电平 说明当P30 P33为0时 代表我们按下了独立按键 例程1 独立按键控制LED亮灭 include
  • Matlab根据flac、pfc或其他软件导出的坐标及应力、位移数据再现云图

    Matlab根据flac pfc或其他软件导出的坐标及应力 位移数据再现云图 案例包括导出在flac6 0中导出位移的fish代码 也可以自己先准备软件导出的坐标数据及对应点的位移或应力数据 可根据需要自行修改为自己需要的云图数据 matl
  • 常用SQL语句

    一 基础1 说明 创建数据库CREATE DATABASE database name 2 说明 删除数据库drop database dbname3 说明 备份sql server 创建备份数据的 deviceUSE masterEXEC
  • 手机摄影_人像模式(双摄虚化Bokeh)

    很多人咨询我 手机上到底有哪些计算摄影的应用和技术 那么接下来就准备抽空写一系列文章做一下介绍 今天这一篇先从 人像模式 讲起 因为不管你现在是用iphone 还是小米 华为 OPPO VIVO 以及其他几乎所有品牌的手机 都已经能用这个功
  • 高仿“饿了么”Vue项目(一)

    高仿 饿了么 Vue项目 一 当我们把Vue框架的概念过了一遍之后 要进一步提升 就要看看别人是怎么使用Vue框架来做项目了 在github上有不少好的Vue项目 我找到了其中的一个 并把它作为下一步学习的目标 链接地址 https git
  • 使用docker/k8s部署vue项目

    使用docker k8s部署vue项目 1 编译前端项目 2 将前端文件打包 注意不要将dist目录打进去 自打dist里的文件 3 Dockerfile 本次打包将前端项目打入nginx镜像的html即可 FROM nginx MAINT
  • 最快捷方便的python安装库方法(适用于初学者)

    TOdfsa录标题 最快捷方便的python安装库方法 初学者 首先 当然我们首先已经安装好python以及其相关的环境配置 若是没有 当然也没有问题 我们可以从最初开始 详情请参考https www cnblogs com Coil177
  • 免费代理网址

    http www 66ip cn 66免费代理网 http www proxy360 cn Region China proxy360代理网 http www goubanjia com free gngn index shtml 转载于
  • MySQL-窗口函数&聚合函数

    从salaries表中查询emp no salary 并根据emp no字段升序累加salary作为running total字段 最后的结果如下图所示 MySQL语句如下 SELECT emp no salary SUM salary O
  • iOS 扩大UIView的点击范围原理

    扩大view点击范围的原理就是iOS的事件传递原理 事件从Window 上开始传递流程 首先执行window的hottest with event 方法 然后在该方法中会调用point inside 方法 判断点击点是否在 window中
  • 第五讲:常见的BeanPostProcessor

    常见的BeanPostProcessor 一 入门Demo 二 添加BeanPostProcessor 1 AutowiredAnnotationBeanPostProcessor 2 CommonAnnotationBeanPostPro
  • 关于SecureCRT输入无显示的问题解决办法

    在使用SecureCRT进行与ARM开发板TQ210做串口通信测试时 发现从开发板发数据能够在窗口中显示 而通过键盘输入时 SecureCRT不显示输入的内容 但敲Enter后 开发板也能接收到 这需要设置SecureCRT进行本地回显 L
  • 【牛客网SQL“必知必会”】刷题记录:一些容易遗忘的知识点

    目录 导读 SQL13 知识点 字符串 IN 范围选择 SQL14 知识点 BETWEEN 数值范围选择 SQL16 知识点 LIKE SQL22 知识点 字符串拼接 SQL23 知识点 时间函数格式化 SQL25 知识点 WHERE GR
  • 全排列算法(java实现)

    100题目之53题目和70题目 在做100题目的时候 全排列的算法困扰了很久 虽然网上了搜了一些资料 可是并没有搞懂 今天花了一个下午的时间 从新梳理了一遍 终于弄明白了 全排列的算法 递归分析网上都有 http www cnblogs c
  • Google Guava Cache--localcache本地缓存实例

    何为缓存 本地缓存类似于map 当给定一个key 首先查找缓存中是否已经有值了 如果有则直接返回数据 相反如果不存在这样的key 则将新的内容value值缓存起来 以便下一次来查询 可以快速返回 当然缓存不是说value值一直不变 会按照一