导航菜单
路很长,又很短
博主信息
昵   称:Cocodroid ->关于我
Q     Q:2531075716
博文数:356
阅读量:1745027
访问量:218079
至今:
×
博文->>搜索结果(耗时0.05秒) 博文列表>>
Tags : 缓存雪崩,缓存穿透,解决方案 发表时间: 2017-02-08 23:27:38
1.缓存穿透:查询一个必然不存在的数据。比如文章表,查询一个不存在的id,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成影响。解决办法:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。2.缓存失效:如果缓存集中在一段时间内失效,DB的压力凸显。这个没有完美解决办法,但可以分析用户行为,尽量让失效时间点均匀分布。缓存雪崩缓存雪崩可能是因为数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。解决思路:1,采用加锁计数,或者使用合理的队列数量来避免缓存失效时对数据库造成太大的压力。这种办法虽然能
类别:Java | 阅读(1108)| 回复(0)| (0) 阅读全文>>
Tags : Solr,缓存 发表时间: 2015-11-16 22:03:52
缓存在Solr中充当了一个非常重要的角色,Solr中主要有这三种缓存:Filtercache(过滤器缓存),用于保存过滤器(fq参数)和层面搜索的结果Documentcache(文档缓存),用于保存lucene文档存储的字段Queryresult(查询缓存),用于保存查询的结果还有第四种缓存,lucene内部的缓存,不过该缓存外部无法控制到。通过这3种缓存,可以对solr的搜索实例进行调优。调整这些缓存,需要根据索引库中文档的数量,每次查询结果的条数等。在调整参数前,需要事先得到solr示例中的以下信息:索引中文档的数量每秒钟搜索的次数过滤器的数量一次查询返回最大的文档数量不同查询和不同排序的
类别:ES/Solr | 阅读(1861)| 回复(0)| (0) 阅读全文>>
Tags : LRU,Java,缓存 发表时间: 2015-08-02 22:23:30
在最近的面试中,我曾被多次问到,怎么实现一个最近最少使用(LRU)的缓存。缓存可以通过哈希表来实现,然而为这个缓存增加大小限制会变成另一个有意思的问题。现在我们看一下怎么实现。最近最少使用缓存的回收为了实现缓存回收,我们需要很容易做到:查询出最近最晚使用的项给最近使用的项做一个标记链表可以实现这两个操作。检测最近最少使用的项只需要返回链表的尾部。标记一项为最近使用的项只需要从当前位置移除,然后将该项放置到头部。比较困难的事情是怎么快速的在链表中找到该项。哈希表的帮助看一下我们工具箱中的数据结构,哈希表可以在(消耗)常量的时间内索引到某个对象。如果我们创建一个形如key->链表节点的哈希表
类别:Java | 阅读(1732)| 回复(0)| (15) 阅读全文>>
Tags : 缓存 发表时间: 2015-03-13 00:25:04
一:分析设计假设有个项目有一定并发量,要用到多级缓存,如下:在实际设计一个内存缓存前,我们需要考虑的问题:1:内存与Redis的数据置换,尽可能在内存中提高数据命中率,减少下一级的压力。2:内存容量的限制,需要控制缓存数量。3:热点数据更新不同,需要可配置单个key过期时间。4:良好的缓存过期删除策略。5:缓存数据结构的复杂度尽可能的低。关于置换及命中率:我们采用LRU算法,因为它实现简单,缓存key命中率也很好。LRU即是:把最近最少访问的数据给淘汰掉,经常被访问到即是热点数据。关于LRU数据结构:因为key优先级提升和key淘汰,所以需要顺序结构。我看到大多实现,都采用链表结构、即:新数据
类别:Java | 阅读(1496)| 回复(0)| (0) 阅读全文>>
Tags : 缓存 发表时间: 2015-03-13 00:13:45
一:缓存预热上次有同学问过。在第一次加载时,我们的缓存都为空,怎么进行预热。单机Web情况下,一般我们使用RunTimeCache。相对于这种情况下:1:我们可以在启动事件里面刷新voidApplication_Start(objectsender,EventArgse){//刷新}2:单写个刷新缓存页面,上线后手动刷新下、或发布时自动调用刷新、或干脆由用户自行触发。分布式缓存(Redis、memcached)情况下:比如:在几十台服务器缓存时,单刷满缓存都需要不少一段时间。这种预热就复杂一些,有的会单写个应用程序去跑,也有的会单写套框架机制去处理(更智能化)。目的都是在上线之前:所有的缓存都
类别:Java | 阅读(1414)| 回复(0)| (0) 阅读全文>>
Tags : 缓存 发表时间: 2015-03-13 00:02:05
一:基本写法为了方便演示,我们用Runtime.Cache做缓存容器,并定义个简单操作类。如下:publicclassCacheHelper{publicstaticobjectGet(stringcacheKey){returnHttpRuntime.Cache[cacheKey];}publicstaticvoidAdd(stringcacheKey,objectobj,intcacheMinute){HttpRuntime.Cache.Insert(cacheKey,obj,null,DateTime.Now.AddMinutes(cacheMinute),Cache.NoSliding
类别:Java | 阅读(1602)| 回复(0)| (0) 阅读全文>>
Tags : 缓存,Redis,Memcached 发表时间: 2016-10-31 21:36:18
Redis的作者SalvatoreSanfilippo曾经对这两种基于内存的数据存储系统进行过比较:Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构
类别:编程开发 | 阅读(949)| 回复(0)| (0) 阅读全文>>
Tags : Web,缓存,HTTP,缓存策略 发表时间: 2016-05-12 22:15:22
简介对于您的站点的访问者来说,智能化的内容缓存是提高用户体验最有效的方式之一。缓存,或者对之前的请求的临时存储,是HTTP协议实现中最核心的内容分发策略之一。分发路径中的组件均可以缓存内容来加速后续的请求,这受控于对该内容所声明的缓存策略。在这份指南中,我们将讨论一些Web内容缓存的基本概念。这主要包括如何选择缓存策略以保证互联网范围内的缓存能够正确的处理您的内容。我们将谈一谈缓存带来的好处、副作用以及不同的策略能带来的性能和灵活性的最大结合。什么是缓存(caching)?缓存(caching)是一个描述存储可重用资源以便加快后续请求的行为的术语。有许多不同类型的缓存,每种都有其自身的特点,应
类别:网站建设 | 阅读(1056)| 回复(0)| (0) 阅读全文>>
Tags : Solr,源码分析,缓存机制 发表时间: 2016-01-30 13:24:07
前文<Solr4.8.0源码分析(18)之缓存机制(一)>介绍了Solr缓存的生命周期,重点介绍了Solr缓存的warn过程。本节将更深入的来介绍下Solr的四种缓存类型,以及两种SolrCache接口实现类。1、SolrCache接口实现类前文已经提到SolrCache有两种接口实现类:solr.search.LRUCache和solr.search.LRUCache。那么两者具体有啥区别呢?1.1solr.search.LRUCacheLRUCache具有以下几个参数:size:cache中可保存的最大的项数,默认是1024initialSize:cache初始化时的大小,默认
类别:搜索引擎 | 阅读(1112)| 回复(0)| (0) 阅读全文>>
Tags : Solr,源码分析,缓存机制 发表时间: 2016-01-28 20:53:22
前文在介绍commit的时候具体介绍了getSearcher()的实现,并提到了Solr的预热warn。那么本文开始将详细来学习下Solr的缓存机制。1.简介Solr目前支持4中cache类型,每种缓存对应一种查询类型。filterCachedocumentCachefieldvalueCachequeryresultCacheSolr提供了两种SolrCache接口实现类:solr.search.LRUCachesolr.search.FastLRUCache。FastLRUCache是1.4版本中引入的,其速度在普遍意义上要比LRUCache更fast些。本文开始将详细介绍以上的内容,而本
类别:搜索引擎 | 阅读(1236)| 回复(0)| (0) 阅读全文>>
Tags : 网站,缓存 发表时间: 2015-11-04 19:49:10
缓存用的好,大大减轻服务器压力和提升用户体验。只要涉及到缓存,肯定会存在数据更新不及时的问题。下面分为3个级别来说,越往下,说明上一级的缓存不存在或者已经失效。第一级,浏览器缓存优点:这是最省资源的一种方式,浏览器甚至都不需要发起请求。缺点:缓存脱离控制,如果缓存时间设置太长,用户无法访问最新的页面。特别出现一个紧急BUG的时候,需要一段时间,才能平息。使用:在header头部添加Expires,Cache-control:max-age,Last-Modified,Etag一个或者多个头部html代码当中,可以在meta对缓存进行控制。建议:JS,CSS,图片可以把缓存时间设置长久一些,永不
类别:网站建设 | 阅读(1383)| 回复(0)| (0) 阅读全文>>
Tags : Memcache,分布式缓存 发表时间: 2015-09-06 21:51:22
基本问题1、memcached的基本设置1)启动Memcache的服务器端#/usr/local/bin/memcached-d-m10-uroot-l192.168.0.200-p12000-c256-P/tmp/memcached.pid-d选项是启动一个守护进程,-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,-u是运行Memcache的用户,我这里是root,-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,-c选项是最
类别:编程开发 | 阅读(875)| 回复(0)| (0) 阅读全文>>
Tags : 网页缓存,移动Web,FaceBook 发表时间: 2015-08-12 21:25:31
在8年之前,Yahoo团队曾经对网页中的缓存做了比较详尽的研究,但是随着互联网的高速发展,研究数据发生了一些变化。这篇文章主要是Facebook的web团队对现在缓存情况一些数据收集和研究。包括PC和移动端资源被缓存的时间以及资源在存在的时间。网页缓存是性能优化很重要的因素,值得一读。能力有限,如有翻译错误的地方,欢迎随时找我交流,我会及时更正:)正文:网页加载速度是每个网站都应该重视的因素。但是往往被大家忽略。缓存是一个提升网站访问速度非常重要的因素(因为用户在下次访问的时候不需要重新计算或者下载已经缓存的资源)我们团队(facebookweb团队)最近针对目前facebook.com没有缓
类别:移动 | 阅读(1582)| 回复(0)| (0) 阅读全文>>
Tags : 网站,网站静态化,缓存 发表时间: 2015-05-27 08:56:10
  上篇我补充了下SSI的知识,SSI是一个十分常见的技术,记得多年前我看到很多门户网站页面的后缀是.shtml,那么这就说明很多门户网站都曾经使用过SSI技术,其实现在搜狐网站也还在用shtml,如下图所示:  由此可见SSI在互联网的应用还是非常广泛的。其实互联网很多网页如果我们按照动静分离策略拆分,绝大部分都是可以当做静态资源处理,例如新闻网站,文学网站,这些网页生成后,大部分的资源都是不变的,说白了这些网页本质就是一个静态页面,我们开发他们时候也不需要服务端的参入,每一个网站都有自己固定的板式,假如每个新网页都要完完整整的开发,重复性的工作实在太多了,出错的概率也非常高,在本系列第二篇
类别:网站建设 | 阅读(981)| 回复(0)| (0) 阅读全文>>
Tags : mysql,优化,缓存 发表时间: 2014-11-27 17:39:56
今天我想对一个Greenfield项目上可以采用的各种性能优化策略作个对比。换言之,该项目没有之前决策强加给它的各种约束限制,也还没有被优化过。具体来说,我想比较的两种优化策略是优化MySQL和缓存。提前指出,这些优化是正交的,唯一让你选择其中一者而不是另一者的原因是他们都耗费了资源,即开发时间。优化MySQL优化MySQL时,一般会先查看发送给mysql的查询语句,然后运行explain命令。稍加审查后很常见的做法是增加索引或者对模式做一些调整。优点1、一个经过优化的查询对于所有使用应用的用户来说都是快速的。因为索引通过对数复杂度的速度来检索数据(又名分制,正如你搜索一个电话簿一样,逐步缩小
类别:MySQL | 阅读(1245)| 回复(0)| (0) 阅读全文>>