guava的两种本地缓存策略

guava的两种本地缓存策略

Guava是一个基于Java的开源库,提供了一些常用的工具类,其中包括了本地缓存的实现。Guava缓存可以快速地添加逐出策略、提供统计信息和异步加载等功能,可用于提高应用程序的性能。

在Guava缓存中,有两种本地缓存策略:基于大小的缓存和基于时间的缓存。

基于大小的缓存

基于大小的缓存指使用缓存条目的数量或缓存的总大小作为驱逐策略的标准。可以通过使用 CacheBuilder.maximumSize()CacheBuilder.maximumWeight() 来指定缓存中最大可以存储多少条目或容量大小,超出这个阈值后的缓存条目将会被逐出。

举个例子,在下面的代码中,我们创建了一个缓存,最多可以存储100个条目:

Cache<String, String> cache = CacheBuilder.newBuilder()
        .maximumSize(100)
        .build();

当存储的条目数量超过100个时,缓存中最老的条目将被逐出,以为新的条目腾出空间。

基于大小的缓存通常适用于一些内存受限的场景,并且具有优美的 LRU 算法,比如优先逐出近期不使用的缓存条目,将空间空出来以继续存储新条目。

基于时间的缓存

基于时间的缓存指定时长为驱逐策略的标准。可以通过使用 CacheBuilder.expireAfterWrite()CacheBuilder.expireAfterAccess() 来指定缓存条目存活的时间。

expireAfterWrite() 方法将在缓存条目写入缓存后开始计时,当超过指定的时间后,该条目将被自动逐出。例如,下面的代码将创建一个缓存条目被存活5分钟后被逐出:

Cache<String, String> cache = CacheBuilder.newBuilder()
        .expireAfterWrite(5, TimeUnit.MINUTES)
        .build();

expireAfterAccess() 方法将在缓存条目被访问时开始计时,当超过指定的时间后,该条目将被自动逐出。例如,下面的代码将创建一个缓存条目被最后一次访问5分钟后被逐出:

Cache<String, String> cache = CacheBuilder.newBuilder()
        .expireAfterAccess(5, TimeUnit.MINUTES)
        .build();

基于时间的缓存通常适用于那些不需要持久存储的数据,比如一些中间结果或者是非常快速变化的数据,避免数据被长时间存留在缓存中。

总之,Guava是一个非常优秀的缓存框架,其提供了灵活的缓存策略,可以根据不同的场景选择不同的缓存策略来满足应用的要求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:guava的两种本地缓存策略 - Python技术站

(0)
上一篇 2023年3月28日
下一篇 2023年3月28日

相关文章

  • 编写codemirrormodes详解

    CodeMirror是一个用于在浏览器中编辑代码的JavaScript库。它支持多种编程语言和主题,并且可以通过编写自定义模式来支持更多的语言。下面是编写CodeMirror模式的详细攻略: 了解CodeMirror模式的结构 CodeMirror模式由以下几个部分组成: token:代表代码中的一个单词或符号。 state:代表代码的当前状态,例如在函数内…

    other 2023年5月7日
    00
  • idea 实现纵列选择和大小写转换操作

    实现纵列选择和大小写转换操作攻略 1. 纵列选择操作 纵列选择操作是指从一个文本中选择指定列的内容。下面是实现纵列选择操作的步骤: 将文本按行分割成一个列表,每行作为列表的一个元素。 遍历列表中的每一行,将每行按照指定的分隔符进行分割,得到一个包含各列内容的子列表。 根据指定的列号,选择对应的列内容,并将其存储到一个新的列表中。 返回新的列表作为纵列选择操作…

    other 2023年8月17日
    00
  • 三分钟快速解析GraphQL基本工作思路!

    下面是关于三分钟快速解析GraphQL基本工作思路的完整攻略,包括GraphQL的基本概念、工作原理和两个示例等方面。 GraphQL的基本概念 GraphQL是一种用于API开发的查询语言和运行时环境。它允许客户端指定需要的数据,而不是像RESTful API那样返回固定的数据结构。GraphQL的核心概念包括类型系统、查询语言和执行引擎等。 GraphQ…

    other 2023年5月6日
    00
  • win10预览版9918下载地址 win10 9918官方下载

    Win10预览版9918下载攻略 Win10预览版9918是Windows 10操作系统的一个预览版本,本攻略将详细介绍如何下载和安装该版本。以下是完整的攻略过程: 步骤一:访问官方网站 首先,你需要访问Windows官方网站以获取Win10预览版9918的下载地址。你可以在以下网址找到官方下载页面:https://www.microsoft.com/zh-…

    other 2023年8月4日
    00
  • Win10怎么添加文件资源管理器开启新进程右键菜单?

    要在Windows 10的资源管理器中添加“以新进程打开”右键菜单,可以按照以下步骤进行操作: 第一步:打开注册表编辑器 1.按下键盘上的“Win+R”组合键打开运行窗口。 2.在运行窗口中输入“regedit”并按下“Enter”键,这将打开注册表编辑器。 第二步:创建新的键和值 1.在注册表编辑器中,导航到以下键值: HKEY_CLASSES_ROOT\…

    other 2023年6月27日
    00
  • vmwareworkstation15

    VMware Workstation 15是一款虚拟机软件,可以在一台计算机上运行多个操作系统。以下是VMware Workstation 15的完整攻略: 下载和安装VMware Workstation 15 可以从VMware官网下载VMware Workstation 15的安装程序。下载完成后,运行安装程序,按照提示完成安装。 创建虚拟机 VMwar…

    other 2023年5月7日
    00
  • 前端从后端获得数据方法

    前端从后端获得数据是Web开发中的一个重要环节。以下是一个完整攻略,介绍了前端从后端获得数据的方法: 步骤1:后端API 要从后端获得数据,必须首先创建后端API。后端API是一组接口,用于从数据库或其他数据源检索数据,并将其返回给前端。 以下是一个示例: from flask import Flask, jsonify app = Flask(__name…

    other 2023年5月6日
    00
  • body测试onclick等鼠标事件无效果详解

    下面是“body测试onclick等鼠标事件无效果详解的完整攻略”,包括问题分析、解决方法和两个示例说明等方面。 问题分析 在使用onclick等鼠标事件时,有时会出现无效果的情况。这种情况可能是由于以下原因导致的: 代码错误:代码中可能存在语法错误或逻辑错误,导致鼠标事件无法正常触发; 元素不存在:鼠标事件绑定的元素可能不存在,导致事件无法触发; 元素被覆…

    other 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部