java创建本地缓存,模拟redis的使用 在一般的小项目中,数据量不大.但是有的时候需要使用缓存记录一些标识或者票据之类的,比如我这边想实现,可以记录系统同时在线的用户数据,或者对其他数据的缓存记录,...创建缓存实体类 package com.adingxiong.cft.entity; import java.io.Serializable; /** * @author xiongc * @date...创建本地缓存工具类 package com.adingxiong.cft.cache; import com.adingxiong.cft.entity.CacheEntity; import org.slf4j.Logger...; /** * @ClassName LocalCache * @Description 本地缓存 代替redis 实现简单数据记录 * @Author xiongchao * @Date...String, CacheEntity> cache = new ConcurrentHashMap(DEFAULT_CAPACITY); /** * 将key-value 保存到本地缓存并制定该缓存的过期时间
本地缓存是指将数据暂存到本地计算机的内存中,以便在后续访问中能够更快地获取。本地缓存通常由应用程序使用,可以提高应用程序的性能和响应速度。...Map 在Java中,实现本地缓存通常使用key/value形式的数据结构,可以选择使用Map集合来作为存储容器。...Guava Cache(也称为Guava缓存)是Google开源的一个Java库,用于实现本地缓存。它是Guava项目的一部分,是Google对Java集合框架的扩展和增强。...本地缓存与分布式缓存对应,缓存进程和应用进程同属于一个JVM,数据的读、写在一个进程内完成。本地缓存没有网络开销,访问速度很快。...Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。
在项目中用到的除了分布式缓存,还有本地缓存,例如:Guava、Encache,使用本地缓存能够很大程度上提升程序性能,本地缓存是直接从本地内存中读取,没有网络开销。...今天给大家介绍一个高性能的 Java 缓存库 -- Caffeine 。...简介 Caffeine是基于Java8 的高性能缓存库,借鉴了 Guava 和 ConcurrentLinkedHashMap 的设计经验,拥有更高的缓存命中率和更快的读写速度。....build(); } } 这种方式的弊端是所有的缓存都放在一起,最好的使用方式是每一个缓存单独创建缓存对象。...,无论读还是写的效率都远高于其他缓存,从 Spring5 开始的默认缓存实现就将 Caffeine 代替原来的Google Guava,支持多种回收策略,感兴趣的小伙伴赶快去试试吧~
Guava Cache是单个应用运行时的本地缓存。它不把数据存放到文件或外部服务器。如果不符合需求,可以选择Memcached、Redis等工具。 小案例 pom.xml添加guava依赖 <?...代码如下: package me.xueyao.cache.java.guava; import com.google.common.cache.*; import me.xueyao.cache.java.pojo.User...; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; /** * @author...情况 System.out.println(userCache.stats().toString()); } } User.java 代码如下: package me.xueyao.cache.java.pojo...第一次循环时缓存中没有数据,构建了缓存,第二次直接命中缓存。如果程序需要单机内存缓存,可以用该方式构建缓存。
之前说了HTTP缓存,今天说说本地缓存。本地缓存也是平时开发过程经常用的。 本地缓存就简单多了,我们常用的有三个:cookie、localStorage、sessionStorage。...LocalStorage:localstorage会把内容一直存在浏览器,直到清除浏览器的缓存。注意,没有清除浏览器缓存,数据会永久存储在浏览器。Localstorage一般在5M左右。...PWA,不知道这个东西在以后会不会火,PWA主要是为了提供跟APP一样,很多东西缓存到本地,也叫作离线缓存就算在没有网的时候也能有内容展示,这也算缓存的一种。...还有一种很容易被忽略的缓存,往返缓存,有点类似单页面应用的history路由模式,就是浏览器的后退前进按钮,主要是为了加快页面的切换速度,不用重新请求,不仅保存了数据,还保存了DOM和JavaScript...这种缓存方式在微信里面也有很多使用。 (完)
这一篇我们将要谈到一个新的本地缓存框架:Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。...SpringBoot 中默认Cache-Caffine Cache SpringBoot 1.x版本中的默认本地cache是Guava Cache。...expireAfterWrite=[duration]: 最后一次写入后经过固定时间过期 refreshAfterWrite=[duration]: 创建缓存或者最近一次更新缓存后经过固定的时间间隔,...; import java.util.List; import java.util.concurrent.TimeUnit; /** * @description: */ @Configuration...cache方面的注解主要有以下5个: @Cacheable 触发缓存入口(这里一般放在创建和获取的方法上,@Cacheable注解会先查询是否已经有缓存,有会使用缓存,没有则会执行方法并缓存) @CacheEvict
当缓存的数据超过最大值时,使用LRU算法替换。这一篇我们将要谈到一个新的本地缓存框架:Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。...SpringBoot 中默认Cache-Caffine Cache SpringBoot 1.x版本中的默认本地cache是Guava Cache。...expireAfterWrite=[duration]: 最后一次写入后经过固定时间过期 refreshAfterWrite=[duration]: 创建缓存或者最近一次更新缓存后经过固定的时间间隔...; import java.util.List; import java.util.concurrent.TimeUnit; /** * @author: rickiyang * @date: 2019...cache方面的注解主要有以下5个: @Cacheable 触发缓存入口(这里一般放在创建和获取的方法上,@Cacheable注解会先查询是否已经有缓存,有会使用缓存,没有则会执行方法并缓存) @CacheEvict
,但是对于一些并发不是很大,但是频繁访问数据库也会影响性能和带来压力的一些场景,我们可以是用本地缓存来 提高程序响应速度和缓解服务器和数据可压力,常用的本地缓存有guava的本地cache,以及各个公司自己封装的本地缓存插件...我们借助guava的本地缓存并对其封装,实现我们的本地缓存操作工具类,实现方式如下: package com.typhoon.demo1.cache; import java.util.List; import...java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import org.apache.commons.lang3...IllegalArgumentException("keys can not be empty"); } cache.invalidateAll(keys); } } 分析: 上述截图中代码片段创建了一个缓存管理器...三、测试本地缓存 编写单元测试类并测试本地缓存: package com.typhoon.demo1.consumer; import java.util.concurrent.Callable; import
前言对一个java开发者而言,提到缓存,第一反应就是Redis。...本地缓存常用技术本地缓存和应用同属于一个进程,使用不当会影响服务稳定性,所以通常需要考虑更多的因素,例如容量限制、过期策略、淘汰策略、自动刷新等。...常用的本地缓存方案有:Guava CacheCaffeineEhCache基于Guava Cache实现本地缓存Guava是Google团队开源的一款 Java 核心增强库,包含集合、并发原语、缓存、IO...EhCacheEhCache是一个纯Java的进程内缓存框架,具有快速、精干的特点。...EhCache提供了多种缓存策略,主要分为内存和磁盘两级,是一款面向通用缓存、Java EE和轻量级容器的缓存框架。
作为JAVA本地缓存框架综合实力天花板级别的Ehcache,除了在本地缓存方面具有强悍的实力外,还具有一个其它对手所不具备的特色功能,即Ehcache提供了对于集群能力的支持,这也使得Ehcache不仅仅是个本地单机缓存...为了解决这个问题,很多时候还是需要本地缓存结合集中式缓存的方式,构建多级缓存的方式来解决。...Ehcache分布式集群方案 相比纯粹的本地缓存,Ehcache自带集群解决方案,通过相应的配置可以让本地缓存变身集群版本,以此来应付分布式场景下各个节点缓存数据不一致的问题,并且由于数据都缓存在进程内部...JMS是一套JAVA中两个进程之间的异步通信API,定义了消息通讯所必须的一组通用能力接口,比如消息的创建、发送、接收读取等。...JGroups是一个开源的群组通讯工具,可以用来创建一个组,这个组中的成员可以给其他成员发送消息。
Caffeine缓存 Caffeine是一个基于Java8开发的,提供了近乎最佳命中率的高性能的本地缓存库。目前Spring内部的缓存使用的就是Caffeine。...caffeine 2.6.2 Caffeine Cache提供了三种缓存填充策略...基于大小回收 // 根据缓存的计数进行驱逐 LoadingCache cache = Caffeine.newBuilder() .maximumSize(10000...) .build(key -> function(key)); // 根据缓存的权重来进行驱逐(权重只是用于确定缓存大小,不会用于决定该缓存是否被驱逐) LoadingCache<String...) { return 0; } }).build(key -> function(key)); 基于引用回收 // 当key和value都没有引用时驱逐缓存
流行的 Java 缓存框架包括: Ehcache , Google Guava , Caffine Cache 。 图片 下图展示了 Caffine 框架的使用示例。...图片 虽然本地缓存框架的功能很强大,但是本地缓存的缺陷依然明显。...5 多级缓存 开源中国网站最开始完全是用本地缓存框架 Ehcache 。 后来随着访问量的激增,出现了一个可怕的问题:“因为 Java 程序更新很频繁,每次更新的时候都要重启。...缓存,如果 Redis 缓存也没数据,则通过 RPC 调用导购服务读取数据,然后再将数据写入本地缓存和 Redis 中;若 Redis 缓存不为空,则将缓存数据写入本地缓存中。...2、由于步骤1已经对本地缓存预热,后续请求直接读取本地缓存,返回给用户端。
该策略算法主要比较缓存元素的创建时间。在数据实效性要求场景下可选择该类策略,优先保障最新数据可用。...下面将直接利用Java代码、配置文件、数据结构图、流程图等方式,分别从自定义构建本地缓存、Ehcache、Google Guava Cache这常用的三种本地缓存设计构建的设计方案出发,让大家对本地缓存有一个更为系统性的深刻理解...在个别业务场景下,我们一般只需要利用JDK自带java.util包下的HashMap或者ConcurrentHashMap数据结构即可实现一个非常轻量级的本地缓存来保存一些程序或任务经常需要访问获取的局数据...ehcache是第一个引入缓存数据持久化存储的开源Java缓存框架。缓存的数据可以在机器重启后从磁盘上重新获得。根据需要将缓存刷到磁盘。...(3)GuavaCache的使用方法 Guava Cache提供Builder模式的CacheBuilder构建器来创建本地缓存的方式,十分方便高效,同时可以利用其提供的各种缓存参数根据不同的业务应用场景进行灵活配置
根据存储位置和应用场景的不同,缓存技术分为本地缓存和分布式缓存两种。本文将详细介绍这两种缓存技术,以及它们在性能和效率上的权衡。...二、本地缓存 本地缓存概述 本地缓存是指将数据存储在本地应用程序或服务器上,通常用于加速数据访问和提高响应速度。本地缓存通常使用内存作为存储介质,利用内存的高速读写特性来提高数据访问速度。...本地缓存的优势 (1)访问速度快:由于本地缓存存储在本地内存中,因此访问速度非常快,能够满足频繁访问和即时响应的需求。...(3)低延迟:由于本地缓存位于本地设备上,因此能够提供低延迟的访问速度,适用于对实时性要求较高的应用场景。...本地缓存的不足 (1)可扩展性有限:本地缓存的可扩展性受到硬件资源的限制,无法支持大规模的数据存储和访问。
Openresty本身也支持开辟内存添加共享缓存的空间,操作api与redis一致 本地缓存的作用 减少查询redis、mysql的操作,实际redis也很快,但是毕竟有网络开销。...本地缓存会更快一些!...so;;"; # ① 开启本地共享缓存,会占用内存:150mb 缓存名mycache,自定义 lua_shared_dict mycache 128m; # 在这里配置...ngx.share.XXX local getCache = ngx.shared.mycache; -- 读取数据 local name = getCache:get('name') ngx.say('第一次读取本地缓存...也就是不会超时 ngx.say('缓存设定成功!') -- 读取数据 local name = getCache:get('name') ngx.say('第二次读取本地缓存!'
SpringBoot 集成 Redis 缓存 查询操作是应用中最常见的操作,如果每次查询都从 MySQL 中查询则会影响效率,通常需要引入缓存来实现查询性能的优化。...缓存可以选择本地缓存,远程缓存或本地缓存结合远程缓存。本地缓存可以使用 Guava 或 Caffeine 提供的解决方案,而远程缓存则可以选择 Redis 这样的内存数据库。...本文记录一下 SpringBoot 集成 Redis 做缓存的相关配置。 1 引入依赖 引入相应 Starter。...SpringBoot 中缓存由 CacheManager 管理,实现自己的 CacheManager 即可。...Redis 操作,但之前只是配置缓存相关配置,直接使用RedisTemplate 时不会生效,需要单独配置。
对于这些工具,我想大家肯定都非常熟悉,所以今天我们不聊它们,我们来聊一聊如何实现本地缓存。参考上面几种工具,要实现一个较好的本地缓存,平头哥认为要从以下三个方面开始。...1、存储集合的选择 实现本地缓存,存储容器肯定是 key/value 形式的数据结构,在 Java 中,也就是我们常用的 Map 集合。...先进先出策略 最先进入缓存的数据在缓存空间不够的情况下会被优先被清除掉,以腾出新的空间接受新的数据。该策略主要比较缓存元素的创建时间。...上面是实现本地缓存需要考虑的三个点,看完我们应该知该如何实现一个本地缓存了,不妨我们一起来实现一个本地缓存。...或者其他缓存工具,它们在实现原理上,跟我们本地缓存的实现原理都差不多。
提到本地缓存,大家都能想到Guava Cache,他的优点是封装了get,put操作;提供线程安全的缓存操作;提供过期策略;提供回收策略;缓存监控。当缓存的数据超过最大值时,使用LRU算法替换。...这一篇我们将要谈到一个新的本地缓存框架:Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。...缓存的删除策略使用的是惰性删除和定时删除。这两个删除策略的时间复杂度都是O(1)。 「3. 基于引用的过期方式」 Java中四种引用类型 ?...expireAfterWrite=[duration]: 最后一次写入后经过固定时间过期 refreshAfterWrite=[duration]: 创建缓存或者最近一次更新缓存后经过固定的时间间隔,...cache方面的注解主要有以下5个: @Cacheable 触发缓存入口(这里一般放在创建和获取的方法上,@Cacheable注解会先查询是否已经有缓存,有会使用缓存,没有则会执行方法并缓存) @CacheEvict
缓存创建的场景有两种:被动创建、初始化创建; 被动创建:需要用到的时候才创建; 场景:用户登陆,当第一次登陆的时候需要获取用户信息,先查数据库然后同步到缓存中,当第二次获取用户信息的时候直接从缓存中获取...初始化创建:随着服务的启动就存在了; 场景:创建新用户的时候就该用户放到缓存中,当用户每次获取的时候直接从缓存中获取,若获取不到再到数据库中获取,减少查询db的次数。...缓存大致分为两在种,本地缓存和分布式缓存,当然如果考虑分级的话还有一级、二级、三级等缓存,但这里以前种来区别。...本地缓存 hashmap,Guava ,ehcache,spring cache 分布式缓存 redis,memcached 代码下载:https://gitee.com/hong99/spring/issues...本地缓存实现 hashmap实现 com.hong.spring.service.IUserService 新增方法 /** * * 功能描述:通过缓存查询 * * @param: * @return
领取专属 10元无门槛券
手把手带您无忧上云