首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏PM吃瓜(公众号)

    缓存技术 2

    这是直接读取数据库的数据 array(10) { [0] => array(12) { ["id"] => string(1) "1" ["catid"] => string(2) ["ord"] => string(1) "2" ["hits"] => string(1) "1" ["status"] => string(1) "1" } 第二次访问 array(10) { [0] => array(12) { ["id"] => string(1) "1" ["catid"] => string(2) "13 "] => string(1) "2" ["hits"] => string(1) "1" ["status"] => string(1) "1" } 说明:第一次运行时 ('静态规则', '有效期', '附加规则'), // 定义格式2 字符串方式 '静态地址' => '静态规则', ) 定义格式1采用数组方式 便于单独为某个静态规则设置不同的有效期,定义格式2

    92820发布于 2019-08-13
  • 来自专栏全栈程序员必看

    java map 缓存_缓存用于

    缓存 什么是缓存? 平常的开发项目中,多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都去查询到数据库。 缓存的使用场景: 在Java应用中,对于访问频率高,更新少的数据,通常的方案是将这类数据加入缓存中,相对从数据库中读取,读缓存效率会有很大提升。 在集群环境下,常用的分布式缓存有Redis等。 但在某些业务场景上,可能不需要去搭建一套复杂的分布式缓存系统,在单机环境下,通常是会希望使用内部的缓存(LocalCache)。 使用map缓存 方案: 基于ConcurrentHashMap实现数据缓存,实现线程安全要求 SoftReference:当内存不够的时候,GC会回收SoftReference所引用的对象 SoftReference 对于Cache,我们希望被缓存的对象最好始终常驻内存,但是如果JVM内存吃紧,为了不发生OutOfMemoryError导致系统崩溃,必要的时候也允许JVM回收Cache的内存,待后续合适的时机再把数据重新

    1.4K20编辑于 2022-11-10
  • 来自专栏Java技术分享

    J2Cache——Java两级缓存框架

    J2Cache 是 OSChina 目前正在使用的两级缓存框架。第一级缓存使用 Ehcache,第二级缓存使用 Redis 。 由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。该缓存框架主要用于集群环境中。 单机也可使用,用于避免应用重启导致的 Ehcache 缓存数据丢失。 J2Cache 使用 JGroups 进行组播通讯。 J2Cache 介绍 PPT:http://www.oschina.net/doc/652 Maven: <dependency>   <groupId>net.oschina.j2cache</groupId 测试方法: 安装 Redis 修改 core/Java/j2cache.properties  配置使用已安装的 Redis 服务器 执行 build.sh 进行项目编译 运行多个 runtest.sh

    1.4K80发布于 2018-01-10
  • 来自专栏Java技术分享

    J2Cache——Java两级缓存框架

    J2Cache 是 OSChina 目前正在使用的两级缓存框架。第一级缓存使用 Ehcache,第二级缓存使用 Redis 。 由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。该缓存框架主要用于集群环境中。 单机也可使用,用于避免应用重启导致的 Ehcache 缓存数据丢失。 J2Cache 使用 JGroups 进行组播通讯。 J2Cache 介绍 PPT:http://www.oschina.net/doc/652 Maven: <dependency>   <groupId>net.oschina.j2cache</groupId 测试方法: 安装 Redis 修改 core/Java/j2cache.properties  配置使用已安装的 Redis 服务器 执行 build.sh 进行项目编译 运行多个

    2K90发布于 2018-02-09
  • 来自专栏四楼没电梯

    Java 缓存机制与缓存失效

    本文将介绍 Java 缓存机制 的基本原理,结合 Redis、Ehcache 等框架的应用,深入探讨缓存的常见策略和缓存失效的处理方法。 二、Java 缓存框架介绍 缓存框架 适用场景 特点 常用功能 Ehcache 本地缓存 轻量级,支持内存和磁盘 TTL、TTI、LRU 缓存失效策略 Redis 分布式缓存、高并发 支持多种数据结构, Ehcache Ehcache 是一个轻量级的 Java 缓存框架,支持内存缓存和磁盘缓存,可以集成到 Spring 等框架中,应用于本地缓存。 代码示例: <! 可配置 TTL(Time to Live) 和 TTI(Time to Idle) 来控制缓存的过期。 2. 使用互斥锁或延迟双删策略,防止缓存击穿。 2. 缓存雪崩 缓存雪崩是指在某个时间点大量缓存同时过期,导致大量请求打到数据库上,进而引发系统崩溃。

    69510编辑于 2024-10-12
  • 来自专栏向治洪

    java http缓存

    HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求,也即直接返回缓存;同时在许多情况下可以不需要发送完整响应。 缓存如何工作 所有的缓存都用一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下);一些规则在协议中有定义(HTTP协议1.0和1.1),一些规则由缓存的管理员设置(浏览器的用户或者代理服务器的管理员 ); 一般说来:遵循以下基本的规则(不必担心,你不必知道所有的细节,细节将随后说明) 如果响应头信息:告诉缓存器不要保留缓存缓存器就不会缓存相应内容; 如果请求信息是需要认证或者安全加密的,相应内容也不会被缓存 一个缓存的副本如果含有以下信息:内容将会被认为是足够新的 含有完整的过期时间和寿命控制头信息,并且内容仍在保鲜期内; 浏览器已经使用过缓存副本,并且在一个会话中已经检查过内容的新鲜度; 缓存代理服务器近期内已经使用过缓存副本 ,并且内容的最后更新时间在上次使用期之前; 够新的副本将直接从缓存中送出,而不会向源服务器发送请求; 如果缓存的副本已经太旧了,缓存服务器将向源服务器发出请求校验请求,用于确定是否可以继续使用当前拷贝继续服务

    1.5K80发布于 2018-02-01
  • Java本地缓存

    Map 在Java中,实现本地缓存通常使用key/value形式的数据结构,可以选择使用Map集合来作为存储容器。 } Tuple2<Long, String> tuple2 = cache.get(code); if (isOverTime(tuple2._1)) { // 如果缓存已超过过期时间 Guava Cache(也称为Guava缓存)是Google开源的一个Java库,用于实现本地缓存。它是Guava项目的一部分,是Google对Java集合框架的扩展和增强。 EhCache EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认CacheProvider。 Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。

    1.3K21编辑于 2024-01-20
  • 来自专栏全栈程序员必看

    java 缓存工具类初始化_Java缓存框架

    Java 缓存工具类 Cache 工具类定义 工具类定义 package com.demo.utils; import org.springframework.util.StringUtils; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; /** * Description: 缓存工具类 * 1.部分方法未验证,如有问题请自行修改 * 2.其他方法请自行添加 @version: V1.0.0 */ public class Cache { /** * 屏蔽工具类的无参构造 避免工具类被实例化 */ private Cache(){ } /** * 缓存留存期 static final long CACHE_HOLD_TIME_30M = 30 * 60 * 1000L; public static final long CACHE_HOLD_TIME_1H = 2

    1.5K20编辑于 2022-11-09
  • 来自专栏Java程序猿部落

    Java高并发缓存架构,缓存雪崩、缓存穿透之谜

    面试官心理分析 其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题,所以面试官一定会问你。 面试题剖析 缓存雪崩 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。 只要数据库不死,就是说,对用户来说,2/5 的请求都是可以被处理的。 只要有 2/5 的请求可以被处理,就意味着你的系统没死,对用户来说,可能就是点击几次刷不出来页面,但是多点几次,就可以刷出来一次。 这样的话,缓存中不会有,请求每次都“视缓存于无物”,直接查询数据库。这种恶意攻击场景的缓存穿透就会直接把数据库给打死。 ?

    1.3K40发布于 2019-05-29
  • 来自专栏JavaEdge

    大道缓存1 缓存特征2 缓存介质3 缓存分类和应用场景缓存实战

    2 Mtconfig实现图 这类缓存实现,优点是能直接在heap区内读写,最快也最方便;缺点同样是受heap区域影响,缓存的数据量非常有限,同时缓存时间受GC影响。 3.1.2 Ehcache Ehcache是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,是一个非常轻量级的缓存实现,我们常用的Hibernate里面就集成了相关缓存功能 ? -- 指定一个文件目录,当Ehcache把数据写到硬盘上时,将把数据写到这个文件目录下 --> <diskStore path="<em>java</em>.io.tmpdir"/> <! Guava Cache Guava Cache是Google开源的Java重用工具集库Guava里的一款缓存工具,其主要实现的缓存功能有: 自动将entry节点加载进缓存结构中; 当缓存的数据超过设置的最大值时 域已发生更新,自动影响cache1、cache2、cache3等处的缓存数据。

    1K21发布于 2018-09-20
  • 来自专栏DannyHoo的专栏

    cell高度的缓存2——利用模型属性缓存

    article/details/53204196 之前的一篇文章(http://blog.csdn.net/u010105969/article/details/53203860)介绍了利用字典缓存 我们如果利用已有的模型进行cell高度的缓存会更简单些。 我们要利用的模型是与cell一一对应的模型。在该模型中增添一个cellHeight的属性用于记录cell的高度。

    62720发布于 2018-09-13
  • 来自专栏编程

    java缓存技术总结

    一、什么是缓存 1、Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问 2、凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache 二、缓存的分类 1、基于web应用的系统架构图 2、在系统架构的不同层级之间,为了加快访问速度,都可以存在缓存 操作系统磁盘缓存->减少磁盘机械操作 数据库缓存->减少文件系统I/O 应用程序缓存 ,由文件系统来管理 2、当应用程序通过文件系统访问磁盘文件的时候,操作系统从Disk Cache当中读取文件内容,加速了文件读取速度 3、Disk Cache由操作系统来自动管理,一般不用人工干预,但应当保证物理内存充足 数据库通常是企业应用系统最核心的部分 数据库保存的数据量通常非常庞大 数据库查询操作通常很频繁,有时还很复杂 以上原因造成数据库查询会引起非常频繁的磁盘I/O读取操作,迫使CPU挂起等待,数据库性能极度低下 2、 OLTP(联机事务处理)应用 2、查询缓存 对数据库查询结果集进行缓存,类似数据库的Query Cache 适用于一些耗时,但是时效性要求比较低的场景。

    2.6K50发布于 2018-01-29
  • 来自专栏小码农薛尧

    Java内存缓存-通过Map定制简单缓存

    为什么要用缓存 ? 场景 在Java应用中,对于访问频率高,更新少的数据,通常的方案是将这类数据加入缓存中,相对从数据库中读取,读缓存效率会有很大提升。 方案 基于JSR107规范自研 基于ConcurrentHashMap实现数据缓存 JSR107规范目标 为应用程序提供缓存Java对象的功能。 定义了一套通用的缓存概念和工具。 小例子 使用Map来实现一个简单的缓存功能 MapCacheDemo.java package me.xueyao.cache.java; import java.lang.ref.SoftReference ; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; /** * @author simon * (); mapCacheDemo.add("uid_10001", "{1}", 5 * 1000); mapCacheDemo.add("uid_10002", "{2}

    3.9K41发布于 2019-08-27
  • 来自专栏个人积累

    java创建本地缓存模拟redis缓存操作

    java创建本地缓存,模拟redis的使用 在一般的小项目中,数据量不大.但是有的时候需要使用缓存记录一些标识或者票据之类的,比如我这边想实现,可以记录系统同时在线的用户数据,或者对其他数据的缓存记录, 创建缓存实体类 package com.adingxiong.cft.entity; import java.io.Serializable; /** * @author xiongc * @date this.value = value; this.gmtModify = gmtModify; this.expire = expire; } } 2. import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit */ private static final int MONITOR_DURATION = 2; // 启动监控线程 static { new Thread

    2.5K41发布于 2020-10-10
  • 来自专栏全栈程序员必看

    java缓存设置_缓存数据可以清除吗

    1、@Cacheable(key = “#vo.toString()”, value=”licence”) //载入缓存 2、@CacheEvict(key = “#vo.toString()”, value=”licence”) //清除缓存 3、缓存设置在service层生效 4、config目录下建ehcache.xml 5、ehcache.xml配置如下 <ehcache xmlns:xsi false” xsi:noNamespaceSchemaLocation=”http://ehcache.sf.net/ehcache.xsd“> <diskStore path=”java.io.tmpdir – 默认的管理策略 maxElementsOnDisk: 在磁盘上缓存的element的最大数目,默认值为0,表示不限制。 eternal:设定缓存的elements是否永远不过期。

    2.4K10编辑于 2022-11-09
  • 来自专栏用户7873631的专栏

    yii2缓存Cache

    LoginForm; class IndexController extends \yii\web\Controller { public function actionSite() { //设置缓存 /*Yii::$app->cache->set("name",666); //获取缓存 echo Yii::$app->cache->get("name");*/ //删除缓存 Yii ::$app->cache->delete("name"); //获取缓存 echo Yii::$app->cache->get("name"); } }

    72110编辑于 2022-03-25
  • 来自专栏小码农薛尧

    Java内存缓存-通过Google Guava创建缓存

    谷歌Guava缓存 Guava介绍 Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问。 ? 代码如下: 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 第一次循环时缓存中没有数据,构建了缓存,第二次直接命中缓存。如果程序需要单机内存缓存,可以用该方式构建缓存

    3.2K30发布于 2019-08-27
  • 来自专栏我要变牛

    Java杂谈之缓存

    ---- 0、缓存 最近开发涉及很多缓存的编写,所以聊聊缓存可能会出现的问题 1、缓存处理流程 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到 2缓存穿透 请求缓存中不存在的数据,从而去数据库中查,数据库中也没有,所以无法加到缓存,下次还是直接怼到数据库,所以高并发的时候就导致数据库崩了。 这样可以防止攻击用户反复用同一个id暴力攻击 缓存雪崩 即缓存同一时间大面积的失效,这个时候又来了一波请求,结果请求都怼到数据库上,从而导致数据库连接异常。 和缓存击穿不同的是缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。 解决方案: 给缓存失效时间,加上一个随机值,避免大量缓存集体失效。 设置热点数据永远不过期 缓存击穿 缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),是指一个key非常热点(类似于爆款),在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间

    59630发布于 2021-05-28
  • 来自专栏全栈程序员必看

    3. java缓存-线程内缓存guava cache

    guava cache的缓存结构 常用的guava cache缓存 根据上图中的缓存框架,我们常用的一些缓存实例有:LocalManualCache和LocalLoadingCache,两者唯一的区别就是 TimeUnit.MINUTES) .build(); //手动加载数据 cache.put("1","name11"); cache.put("2" (LocalCache.java:2285) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2200) at com.google.common.cache.LocalCache.get (LocalCache.java:3947) at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3951) at com.google.common.cache.LocalCache = null) { Optional<User> userOpt = loadingCache.getUnchecked(2L); if (userOpt.isPresent

    1.2K50编辑于 2022-11-09
  • 来自专栏架构师成长之路

    HTTP详解(2)-请求、响应、缓存

    使用这样的机制将提高网站的性能 例如: If-None-Match: "03f2b33c0bfcc1:0" Pragma: 作用: 防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control 所有内容都不会被缓存 2. 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常,比如java 容器部署war的时候,就出现503, 或者是nginx处理的文件没有权限。 浏览器缓存 浏览器缓存:包括页面html缓存和图片js,css等资源的缓存。如下图,浏览器缓存是基于把页面信息保存到用户本地电脑硬盘里。 2、关于图片,css,js,flash的缓存 这个主要通过服务器的配置来实现这个技术,如果使用apache服务器的话,可以使用mod_expires模块来实现: 编译mod_expires模块: Cd

    3K30编辑于 2022-04-15
领券