首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏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

    94020发布于 2019-08-13
  • 来自专栏JavaEdge

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

    2 Mtconfig实现图 这类缓存实现,优点是能直接在heap区内读写,最快也最方便;缺点同样是受heap区域影响,缓存的数据量非常有限,同时缓存时间受GC影响。 image 图4 缓存数据流转图(L1:本地内存层;L2:Terracotta服务节点层) Ehcache的配置使用如下: <ehcache> <! image 图13 域缓存处理图 如图13,按旧的方案,当cache0发送变化时,为了保持信息的实时更新,需要手动删除cache1、cache2、cache3等相关处的缓存数据。 增加域缓存概念,cache0、cache1、cache2、cache3是以账号ID为基础,相互存在影响约束的集合体,我们作为一个域集合,增加域缓存处理,当cache0发送变化时,整体的账号ID domain 域已发生更新,自动影响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的高度。

    64720发布于 2018-09-13
  • 来自专栏用户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"); } }

    72910编辑于 2022-03-25
  • 来自专栏架构师成长之路

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

    使用这样的机制将提高网站的性能 例如: If-None-Match: "03f2b33c0bfcc1:0" Pragma: 作用: 防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control 所有内容都不会被缓存 2. 1xx:指示信息——表示请求已经接受,继续处理 2xx:成功——表示请求已经被成功接收、理解、接受。 浏览器缓存 浏览器缓存:包括页面html缓存和图片js,css等资源的缓存。如下图,浏览器缓存是基于把页面信息保存到用户本地电脑硬盘里。 2、关于图片,css,js,flash的缓存 这个主要通过服务器的配置来实现这个技术,如果使用apache服务器的话,可以使用mod_expires模块来实现: 编译mod_expires模块: Cd

    3K30编辑于 2022-04-15
  • 来自专栏PHP学习网

    Yii2开启Schema 缓存

    Schema缓存是一个比较特殊的缓存,只有当我们使用活动记录是这个缓存才会生效。 什么是活动记录 活动记录能智能检测数据库对象的集合(例如列名、列类型、约束)而不需要手动地描述它们。 通过启用 Schema 缓存,检索到的数据库对象的集合将被保存在缓存中并在将来的请求中重用。 Schema缓存开启的方法: 要开启Schema缓存,需要配置一个cache应用组件来储存Schema信息,并在配置中设置 yii\db\Connection::enableSchemaCache 为true 'cache' => [ 'class' => 'yii\caching\MemCache', //配置缓存组件,这里用了memcache ], 2、查询语句时若是使用了asArray(),schema缓存是无效的。

    67010编辑于 2022-08-03
  • 来自专栏后端JavaEE

    Redis常见问题:1.缓存穿透2.缓存击穿

    1.解决方案(防止mysql宕机) 在Redis中放入 1.假数据 2.set集合,里面放入所有mysql中的id,再通过布隆过滤器过滤,没有这个id的请求就不在mysql中找了 二、缓存击穿 ? 1.解决方案 1.从Redis处理:一个请求,给这个热点数据加一点时间(避免热点数据过期) 2.分布式锁:Tomcat集群synchronized-Tomcat分布式锁-Redis(避免大量数据访问数据库 ) 三、缓存雪崩:MySql宕机 大量Redis中的缓存同时到期了,导致大量的请求透视访问数据库,导致数据库宕机 1.解决方案 同时到期原因:缓存预热,设置时间一样 1.在缓存预热时,设置不一样的生存时间 2.加锁 3.边访问边加生存时间 四、缓存倾斜:Redis宕机 ? 1.解决方案 1.花钱:在请求多的节点,搭建主从 2.将数据放在JVM中缓存中 五、双写一致性问题 ? 1.解决方案 1.双删:先删除Redis缓存,再删Redis缓存 ?

    39930发布于 2020-11-04
  • 来自专栏mySoul

    解释SpringBoot之Ehcache 2.x缓存

    介绍 这里介绍Ehcache 2.X 缓存 添加基本的web项目 [wp_editor_md_a364d1423e3bdfc4066b7266a02a2393.jpg] 添加Ehcache 依赖 <? diskPersistent="true" diskExpiryThreadIntervalSeconds="600"/> </ehcache> 注解上开启缓存 @CacheConfig(cacheNames = "book_cache") public class BookDao { // 对该方法进行缓存 @Cacheable public public Book updateBookById(Book book){ System.out.println("更新ById"); book.setName("ming2" import static org.junit.jupiter.api.Assertions.*; @ExtendWith(SpringExtension.class) //导入spring测试框架[2]

    48200发布于 2020-06-20
  • 来自专栏SpringCloud专栏

    2 mysql底层解析——表对象缓存,包括连接、解析、缓存、引擎、存储等

    这一层聚集了mysql的最多的逻辑,包括了请求解析、查询缓存、语义分析、查询优化、各种计算函数、扫描记录、binlog、缓存、锁、内存管理等等。 缓存里key就是这个查询语句,如果查询缓存有,那么就直接返回value给客户端。这个查询缓存是个非常鸡肋的东西,新版8.0已经把它删掉了。这里也不多提。 请注意,这个结构体就是一级缓存,它被所有用户共享,并且不可修改,从系统表被读入直到该表被修改或删除,这个缓存都会一直存在。 二级表对象缓存 表已经找到了,结构也已经被缓存了,此时我还不能操作这个表。 缓存后,当下次用户再访问时,就不需要重新实例化了。 总结 可以看到,当你想操作一个表时,系统对于这个表,会有两层缓存。第一层是SHARE缓存,第二层就是实例化后的对象缓存Table。 是缓存就有淘汰策略,其实我们自己就能判断出来,SHARE缓存只有在表结构定义改变时,才会被删除,但是倘若表巨多,SHARE缓存超出限制,也会淘汰那些不经常使用的SHARE。

    1.5K30发布于 2019-08-26
  • 来自专栏程序员泥瓦匠

    WebFlux 集成 Redis 实现缓存 | Spring Boot 2

    下面我们写个小案例 ReactiveRedisTemplate 在上一讲工程中,新建 CityWebFluxReactiveController 类,路由为 /city2 开头。 @RestController @RequestMapping(value = "/city2") public class CityWebFluxReactiveController { provinceId=3, cityName='三亚', description='水好,天蓝'} 2017-04-13 18:29:03.145 INFO 13038 --- [nio-8080-exec-2] WebFlux 中 WebSocket 实现通信》 《10:WebFlux 集成测试及部署》 《11:WebFlux 实战图书管理系统》 代码示例 本文示例读者可以通过查看下面仓库的中的模块工程名: 2- 参考资料 Spring Boot 2.x WebFlux 系列:https://www.bysocket.com/archives/2290 spring.io 官方文档

    2.2K20编辑于 2021-12-17
  • 来自专栏yuyy.info技术专栏

    【笔记】分布式缓存(1-2)

    300分钟吃透分布式缓存——陈波 分布式缓存 01 业务数据访问性能太低怎么办? 缓存的定义 狭义缓存 加速CPU数据交换的存储器。 广义缓存 数据高速交换的存储介质,加速数据访问。 降低网络拥堵 减轻服务负载 增强可扩展性 缓存也可以弹性伸缩 缓存的代价 任何事情都有两面性,缓存也不例外。 服务系统中引入缓存,会增加系统的复杂度。 由于缓存相比原始DB存储的成本更高。 参考 300分钟吃透分布式缓存 02 如何根据业务来选择缓存模式和组件? 但是这期间的查询操作,还是要自行创建缓存。异步创建缓存还可以进行预读,缓存附近的内容,空间局限性原理。也可以通过MQ来做。 热数据友好,写操作时更新缓存,而不是删除缓存

    55730编辑于 2023-03-27
  • 来自专栏小工匠聊架构

    实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发

    文章目录 概述 接口层改造 CacheService接口 CacheService接口实现类 工具类中的方法 单元测试 Github地址 概述 设计如下: 在接口层传入缓存key的前缀,通过匹配的方式将能匹配到该前缀的所有 final String SCLISTKEY = "shopcategory"; ..... ..... } ---- CacheService接口 package com.artisan.o2o.service public interface CacheService { /** * * * @Title: removeFromCache * * @Description: 根据缓存的前缀清理匹配的全部缓存 areaService.getAreaList(); for (Area area : areaList) { System.out.println("**---->" + area.toString()); } // 清除缓存 ---- Github地址 代码地址: https://github.com/yangshangwei/o2o

    48920发布于 2021-08-17
  • 来自专栏Leetcode名企之路

    缓存缓存穿透、缓存雪崩、缓存击穿

    原文:https://www.cnblogs.com/raichen/p/7750165.htm 缓存穿透 概念 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存 可以给缓存设置过期时间时加上一个随机值时间,使得每个key的过期时间分布开来,不会集中在同一时刻失效。 缓存击穿(并发) 概念 高并发系统,如果一个缓存失效,存在多进程同时查询DB,同时更新缓存。 解决办法 使用互斥锁(mutex key): 这种解决方案思路比较简单,就是只让一个线程构建缓存,其他线程等待构建缓存的线程执行完,重新从缓存获取数据就可以了(如下图) ? "提前"使用互斥锁(mutex key): 在value内部设置1个超时值(timeout1), timeout1比实际的 timeout(timeout2)小。 (2) 从功能上看,如果不过期,那不就成静态的了吗?所以我们把过期时间存在key对应的value里,如果发现要过期了,通过一个后台的异步线程进行缓存的构建,也就是“逻辑”过期 ?

    3K20发布于 2018-10-25
  • 来自专栏JavaEdge

    MyBatis实战(一)-缓存机制的设计1 数据缓存设计结构2 工作机制

    1 数据缓存设计结构 1.1 一级缓存 Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存 一级缓存是MyBatis内部实现的一个特性,用户不能配置 ,默认情况下自动支持的缓存,一般用户没有定制它的权利 1.2 二级缓存 Application应用级别的缓存,生命周期长,跟Application的生命周期一样,即作用范围为整个Application应用 缓存架构 2 工作机制 2.1 一级缓存的工作机制 一级缓存是Session会话级别的,一般而言,一个SqlSession对象会使用一个Executor对象来完成会话操作,Executor对象会维护一个 如果有查询结果,则直接返回缓存结果 如果缓存未命中,再交给真正的Executor对象来完成查询操作,之后CachingExecutor会将真正Executor返回的查询结果放置到缓存中,然后再返回给用户 MyBatis的二级缓存设计得比较灵活,可以使用MyBatis自己定义的二级缓存实现 也可以通过实现org.apache.ibatis.cache.Cache接口自定义缓存 也可以使用第三方内存缓存

    54230发布于 2018-10-10
  • 来自专栏架构悟道

    手写本地缓存实战2—— 打造正规军,构建通用本地缓存框架

    缓存框架定调 在一个项目系统中需要缓存数据的场景会非常多,而且需要缓存的数据类型也不尽相同。 缓存框架实现 缓存容器接口设计 在前一篇文章中,我们有介绍过项目中常见的缓存使用场景。基于提及的几种具体应用场景,我们可以归纳出业务对本地缓存的API接口层的一些共性诉求。 需要支持选择多种不同能力的缓存容器,比如常规的容器、支持数据过期的缓存容器等。 需要能够支持对缓存容器的管理,以及缓存基础维护能力的支持,比如销毁缓存容器、比如清理容器内的过期数据。 因为本地缓存设计存在的初衷就是用来应对单进程内的缓存独立缓存使用,而这种涉及到多节点之间缓存数据一致保证的场景,本就不是本地缓存的擅长领域。所以在分布式场景下,往往都会直接选择使用集中式缓存。 补充说明2 : 关于本文中涉及的演示代码的完整示例,我已经整理并提交到github中,如果您有需要,可以自取:https://github.com/veezean/JavaBasicSkills 我是悟道

    85730编辑于 2022-11-25
  • 来自专栏五毛程序员

    Spring Boot Oauth2缓存UserDetails到Ehcache

    在Spring中有一个类CachingUserDetailsService实现了UserDetailsService接口,该类使用静态代理模式为UserDetailsService提供缓存功能。 ); return user; } } CachingUserDetailsService默认的userCache属性值为new NullUserCache(),该对象并未实现缓存 因为我打算使用EhCache来缓存UserDetails,所以需要使用Spring的EhCacheBasedUserCache类,该类是UserCache接口的实现类,主要是缓存操作。 缓存UserDetails到Ehcache的具体实现如下: ehcache.xml <?xml version="1.0" encoding="UTF-8"? UserDetailsService userDetailsService; 欢迎关注我的oauthserver项目,仅仅需要运行建表sql,修改数据库的连接配置,即可得到一个Spring Boot Oauth2

    1.1K10发布于 2018-08-09
  • 来自专栏Spring Boot学习之路

    Spring Boot 3 整合Redis(2)注解驱动缓存

    Spring Boot 3 整合Redis(2)注解驱动缓存 Spring Boot提供了对缓存的简便支持,可通过注解来实现缓存操作,避免重复编写代码。 2.如何在 Spring Boot 中启用 Redis 缓存? ,可以指定缓存的 key 或清空整个缓存空间。 自定义缓存管理 以上缓存名称、过期时间和序列化方式都是默认设置,Spring 允许我们自定义缓存管理器。在大多数情况下,默认配置足够使用,但如果需要定制化的缓存行为,我们可以自定义缓存配置。 在生产环境中,恰当的缓存策略、过期时间和缓存层优化将进一步提高系统的稳定性和扩展能力。

    60810编辑于 2025-01-13
  • 来自专栏鳄鱼儿的技术分享

    Redis缓存缓存穿透、缓存击穿、缓存雪崩

    ☘️解决思路 思路一:由于缓存穿透是因为缓存没有生效,是否可以针对DB不存在的数据设置缓存空值,让请求到缓存就OK。缓存的有效时间可以设置短点,如30s,避免误伤正常业务。 缓存击穿 缓存击穿是指数据库有,缓存没有的数据,大量请求访问这个缓存不存在的数据,最后请求打到DB可能导致DB宕机。 思路三:保证热点数据在缓存中,可以设置热点缓存数据永不过期;或者采用定时任务去定时刷新缓存数据与过期时间,保证缓存数据存在。 缓存雪崩 缓存雪崩是指数据库有,缓存没有的数据,大量请求访问这些缓存不存在的数据,最后请求打到DB可能导致DB宕机。 缓存一致性 缓存一致性指的是缓存与DB之间的数据一致性,我们需要通过各种手段来防止缓存与DB不一致,我们要保证缓存与DB的数据一致或者数据最终一致。 ☘️解决思路 思路一:先删除缓存再更新数据。

    1.2K10编辑于 2024-05-22
  • 来自专栏热爱IT

    Yii2页面缓存详解 转

    页面缓存指的是在服务器端缓存整个页面的内容。随后当同一个页面 被请求时,内容将从缓存中取出,而不是重新生成。                 ]             ]         ];     }     public function actionIndex(){         echo 2;     }     public function actionTest(){         echo 2;     } } 上述代码表示缓存只在 index 页面中生效,并且页面最多缓存 如上列举例中,仅仅只有index页面会缓存下来,其他页面则不会缓存。     duration:定义缓存过期秒数。如上列举例中,100秒之后缓存将过期。     如上列举例中,使用的是文件依赖,当 “robots.txt” 文件内容改变时,缓存将失效。当然,还有其他的依赖关系,可以在数据缓存中查看。

    68120发布于 2019-04-10
  • 来自专栏简栈文化

    CPU的缓存L1、L2、L3与缓存行填充

    L1,L2,L3 指的都是CPU的缓存,他们比内存快,但是很昂贵,所以用作缓存,CPU查找数据的时候首先在L1,然后看L2,如果还没有,就到内存查找一些服务器还有L3 Cache,目的也是提高速度。 高速缓存的工作原理 1. 2缓存分类 前面是把Cache作为一个整体来考虑的,现在要分类分析了。Intel从Pentium开始将Cache分开,通常分为一级高速缓存L1和二级高速缓存L2。 在P4处理器中使用了一种先进的一级指令Cache——动态跟踪缓存缓存行填充 CPU访问内存时,并不是逐个字节访问,而是以字长为单位访问。比如32位的CPU,字长为4字节,那么CPU访问内存的单位也是4字节。

    3.8K21发布于 2021-11-04
领券