返回顶部
首页 > 资讯 > 精选 >LocalCache在Java项目中如何实现本地缓存
  • 335
分享到

LocalCache在Java项目中如何实现本地缓存

本地缓存localstoragejava 2023-05-31 14:05:10 335人浏览 泡泡鱼
摘要

今天就跟大家聊聊有关LocalCache在Java项目中如何实现本地缓存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、本地缓存应用场景localcache有着极大的性能优势: 单

今天就跟大家聊聊有关LocalCache在Java项目中如何实现本地缓存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一、本地缓存应用场景

localcache有着极大的性能优势:

单机情况下适当使用localcache会使应用的性能得到很大的提升。

集群环境下对于敏感性要求不高的数据可以使用localcache,只配置简单的失效机制来保证数据的相对一致性。

哪些数据可以存储到本地缓存?

1.访问频繁的数据;

2.静态基础数据(长时间内不变的数据);

3.相对静态数据(短时间内不变的数据)。

二、java本地缓存标准

Java缓存新标准(javax.cache),这个标准由jsR107所提出,已经被包含在Java EE 7中。

特性:
1.原子操作,跟java.util.ConcurrentMap类似
2.从缓存中读取
3.写入缓存
4.缓存事件监听器
5.数据统计
6.包含所有隔离(iOSlation)级别的事务
7.缓存注解(annotations)
8.保存定义key和值类型的泛型缓存
9.引用保存(只适用于堆缓存)和值保存定义

但目前应用不是很普遍。

三、java开源缓存框架

比较有名的本地缓存开源框架有:

1.EHCache

EHCache是一个纯java的在进程中的缓存,它具有以下特性:快速,简单,为Hibernate2.1充当可插入的缓存,最小的依赖性,全面的文档和测试

BUG: 过期失效的缓存元素无法被GC掉,时间越长缓存越多,内存占用越大,导致内存泄漏的概率越大。

2.OSCache

OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或Http请求,任何java对象都可以缓存。拥有全面的api--OSCache API给你全面的程序来控制所有的OSCache特性。永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。

3.JCache

Java缓存新标准(javax.cache)

4.cache4j

cache4j是一个有简单API与实现快速的Java对象缓存。它的特性包括:在内存中进行缓存,设计用于多线程环境,两种实现:同步与阻塞,多种缓存清除策略:LFU, LRU, FIFO,可使用强引用。

5.ShiftOne

ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。

6.WhirlyCache

Whirlycache是一个快速的、可配置的、存在于内存中的对象的缓存。 

四、LocalCache实现

LocalCache简介

LocalCache是一个精简版本地缓存组件,有以下特点:

1.  有容量上限maxCapacity;
2.  缓存达到容量上限时基于LRU策略来移除缓存元素;
3.  缓存对象的生命周期(缓存失效时间)由调用方决定;
4.  缓存对象失效后,将会有定时清理线程来清理掉,不会导致内存泄漏。
5.  性能比Ehcache稍强。

总体设计

LocalCache总体设计:

1.  缓存元素 CacheElement;
2.  缓存容器 LRULinkedHashMap
3.  缓存接口 Cache;
4.  缓存组件实现 LocalCache。

详细设计

1.  CacheElement设计

public class CacheElement { private Object key; private Object value; private long createTime; private long lifeTime; private int hitCount; public CacheElement() { } public CacheElement(Object key ,Object value) { this.key = key; this.value = value; this.createTime = System.currentTimeMillis(); }  public Object geTKEy() { return key; } public void setKey(Object key) { this.key = key; } public Object getValue() { hitCount++; return value; } public void setValue(Object value) { this.value = value; } public long getCreateTime() { return createTime; } public void setCreateTime(long createTime) { this.createTime = createTime; } public int getHitCount() { return hitCount; } public void setHitCount(int hitCount) { this.hitCount = hitCount; } public long getLifeTime() { return lifeTime; } public void setLifeTime(long lifeTime) { this.lifeTime = lifeTime; }  public boolean isExpired() { boolean isExpired = System.currentTimeMillis() - getCreateTime() > getLifeTime(); return isExpired; }  public String toString() { StringBuffer sb = new StringBuffer(); sb.append("[ key=").append(key).append(", isExpired=").append(isExpired())  .append(", lifeTime=").append(lifeTime).append(", createTime=").append(createTime)  .append(", hitCount=").append(hitCount)  .append(", value=").append(value).append(" ]"); return sb.toString(); }   public final int hashCode(){ if(null == key){  return "".hashCode(); } return this.key.hashCode(); }   public final boolean equals(Object object) { if ((object == null) || (!(object instanceof CacheElement))) {  return false; } CacheElement element = (CacheElement) object; if ((this.key == null) || (element.getKey() == null)) {  return false; } return this.key.equals(element.getKey()); }}

--结束END--

本文标题: LocalCache在Java项目中如何实现本地缓存

本文链接: https://lsjlt.com/news/226419.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • LocalCache在Java项目中如何实现本地缓存
    今天就跟大家聊聊有关LocalCache在Java项目中如何实现本地缓存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、本地缓存应用场景localcache有着极大的性能优势: 单...
    99+
    2023-05-31
    本地缓存 localstorage java
  • 在Java中使用 LocalCache如何实现本地缓存
    在Java中使用 LocalCache如何实现本地缓存?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用场景在Java应用中,对于访问频率高,更新少的数据,通常...
    99+
    2023-05-31
    java localcache 本地缓存
  • java本地缓存如何实现
    Java本地缓存可以通过多种方式实现,以下是其中几种常用的方法:1. 使用HashMap:可以使用java.util.HashMap...
    99+
    2023-10-21
    java
  • 利用Java如何实现本地缓存
    本篇文章给大家分享的是有关利用Java如何实现本地缓存,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用场景在 Java 应用中,对于访问频率高,更新少的数据,通常的方案是将这...
    99+
    2023-05-31
    java 本地缓存 ava
  • 如何在java项目中操作Redis缓存
    这篇文章给大家介绍如何在java项目中操作Redis缓存,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.导入必须的Jar包使用Java操作Redis需要两个必须的Jar包:jedis-2.5.1.jar 和 ...
    99+
    2023-05-31
    java redis
  • Ehcache缓存框架如何在Java项目中使用
    今天就跟大家聊聊有关Ehcache缓存框架如何在Java项目中使用 ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言JAVA缓存实现方案有很多,最基本的自己使用Map去构建缓存,或...
    99+
    2023-05-31
    java ehcache ava
  • Java实现本地缓存、分布式缓存及多级缓存
    以下均为自己参考其它博主文章或自己理解整理而成,如有错误之处,欢迎在评论区批评指正! 0. 缓存简介        像MySql等传统的关系型数据库已经不能适用于所有的业务场景,比如电商系统的秒杀场景,APP首页的访问流量高峰场景,很容易造...
    99+
    2023-09-17
    java
  • 在Java项目中如何实现实例化
    今天就跟大家聊聊有关在Java项目中如何实现实例化,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java实例化的几种方法总结Java创建有四种方式:(1)用new 语句创建对象,这是...
    99+
    2023-05-31
    java 实例化 ava
  • 如何在Python和Spring项目中实现二维码生成和缓存?
    二维码(QR code)是一种二维的条码,可存储大量信息。二维码的应用范围广泛,例如支付宝、微信支付等移动支付方式,都采用了二维码技术。在Python和Spring项目中,如何实现二维码的生成和缓存呢?本文将为您介绍详细的实现方法。 一、P...
    99+
    2023-10-07
    spring 缓存 二维码
  • 如何在PHP项目中实现数据缓存和页面预加载?
    如何在PHP项目中实现数据缓存和页面预加载?随着互联网的发展,网站和应用程序的性能优化成为了一个重要的议题。其中,数据缓存和页面预加载是提高用户访问速度和改善用户体验的重要手段之一。在PHP项目中实现数据缓存和页面预加载,可以有效地减少数据...
    99+
    2023-11-02
    数据缓存 PHP项目 页面预加载
  • 如何在PHP项目中实现数据缓存和页面静态化?
    如何在PHP项目中实现数据缓存和页面静态化?随着互联网的快速发展,网站访问量不断增加,如何提高网站的性能成为了开发人员共同面临的问题。在PHP项目中,数据缓存和页面静态化是两种常见的性能优化方法。本文将介绍如何在PHP项目中实现数据缓存和页...
    99+
    2023-11-02
    - PHP (编程语言) 数据缓存: - Cache (缓存) - Implementation (实现) 页面静态化:
  • 如何在PHP项目中实现国际化和本地化支持?
    随着全球化的发展,各种语言和文化之间的交流变得越来越普遍。因此,在开发Web应用程序时,考虑国际化和本地化支持变得越来越重要。在这篇文章中,我们将探讨如何在PHP项目中实现国际化和本地化支持。什么是国际化和本地化?国际化(i18n)和本地化...
    99+
    2023-11-03
    in (国际化) ln (本地化) PHP localization (PHP本地化)
  • Java项目中的NPM缓存问题:如何解决?
    在现代Web开发中,NPM(Node Package Manager)已经成为了不可或缺的一部分。NPM是一个用于Node.js的包管理器,可以帮助开发者轻松地安装、更新和管理项目所需的各种依赖包。然而,在Java项目中使用NPM时,我们...
    99+
    2023-08-30
    leetcode npm 缓存
  • 缓存存储与Java异步编程:如何在项目中正确应用?
    随着互联网技术的发展,应用程序的性能和响应速度已经成为了用户对软件的基本要求之一。缓存存储和异步编程是提高应用程序性能和响应速度的两个重要技术手段。在本文中,我们将讨论缓存存储和Java异步编程的基本概念及其在项目中的正确应用。 一、缓存...
    99+
    2023-06-28
    异步编程 缓存 存储
  • webservice方式如何在java项目中实现
    webservice方式如何在java项目中实现?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体内容如下定义接口package org.enson.chan;...
    99+
    2023-05-31
    java webservice bs
  • FloydWarshall算法如何在java项目中实现
    这期内容当中小编将会给大家带来有关FloydWarshall算法如何在java项目中实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。求一个图中任意两点之间的最短路径   Flo...
    99+
    2023-05-31
    java ava floydwarshall
  • 如何在Android项目中是SharedPreferences实现存储
    如何在Android项目中是SharedPreferences实现存储?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。SharedPreferences详解Sha...
    99+
    2023-05-31
    android sharedpreferences roi
  • 如何在Java中实现实时重定向缓存?
    在Java开发中,实现实时重定向缓存是一项非常重要的技能。通过实时重定向缓存,我们可以将Java应用程序中的输出信息缓存起来,并将其发送到多个目标。这样可以有效地提高应用程序的性能,并且方便我们对程序运行过程进行监控和调试。 本文将介绍如何...
    99+
    2023-06-22
    重定向 实时 缓存
  • 缓存是Java项目的瓶颈吗?NPM缓存如何应对?
    随着网络应用的发展,缓存机制在提高系统性能和优化用户体验方面发挥着至关重要的作用。而在Java项目中,缓存机制同样扮演着一个重要的角色。但是,缓存究竟是否是Java项目的瓶颈呢?如何应对NPM缓存问题呢?本文将为大家进行探讨。 一、缓存是...
    99+
    2023-08-30
    leetcode npm 缓存
  • 在vue移动端项目中怎么实现页面缓存
    这篇文章主要介绍在vue移动端项目中怎么实现页面缓存,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!背景在移动端中,页面跳转之间的缓存是必备的一个需求。例如:首页=>列表页=>详情页。从首页进入列表页,列表...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作