商丘网站,黑色 网站,链接在线缩短,班级优化大师免费下载学生版菜菜哥#xff0c;告诉你一个好消息YY妹子#xff0c;什么好消息#xff0c;你有男票了#xff1f;不是啦#xff0c;我做的一个网站#xff0c;以前经常由于访问量太大而崩溃#xff0c;现在我加上了缓存#xff0c;很稳定啦加的什么缓存呢#xff1f;我用的redis告诉你一个好消息YY妹子什么好消息你有男票了不是啦我做的一个网站以前经常由于访问量太大而崩溃现在我加上了缓存很稳定啦加的什么缓存呢我用的redis号称业界最快的缓存组件了你觉得现在的缓存操作应该是最快的了吗是的我觉得没有缓存能比这种模式更快了你先停停我给你先讲个故事进程内缓存是指缓存和应用程序在相同地址空间。即同一个进程内。分布式缓存是指缓存和应用程序位于不同进程的缓存通常部署在不同服务器上。 从前有个机构机构的主人叫做 CPU这个机构专门派仆人取一些东西然后做相应的处理。下面是这个机构日常的场景。cpu赶紧去我的仓库L1缓存取点东西仆人主人你要的东西那里离我们最近所以很快但是空间比较小。cpu你丫还挺快只用了大约一秒cpu赶紧去仓库 L2缓存取点东西仆人主人你要的东西那里离我们也很近比L1缓存远一点但是也很快空间比较小但是比L1缓存的空间大。cpu速度还可以大约20秒就回来了cpu街上有一个地方叫内存赶紧去取点东西仆人主人你要的东西内存这个地方空间很大呀就是稍微远了点cpu居然用了5分钟等你这段时间我都刷了好几个段子了cpu有一个叫做磁盘的小镇赶紧去取点东西仆人主人你要的东西磁盘这个地方空间太大呀取点东西很慢呀cpu居然用了5天等你这段时间我都能抱团来一个周边游了cpu有一个叫做互联网的国度赶紧去取点东西仆人主人你要的东西互联网太远了取点东西太费劲了cpu居然用了15天等你去互联网取东西简直就是在浪费我的生命cpu当我做完一个委托人的任务切换到另外一个委托人的任务时候我需要把上一个委托人的一些信息先记录下来然后还需要把新委托人的信息读取一遍这个过程我是很耗时的大约需要一个小时呢以上故事纯属预估数据真实数据会根据不同的硬件配置和网络环境有误差。 通过以上不正经的小故事我们可以了解到cpu取各个设备数据的大体差距。至于YY妹子的问题大家也应该了解了。1. 首先把数据从磁盘加载到内存做缓存这个是对的。毕竟磁盘的IO速度比内存要慢的多。就拿我们现在使用的大多数PC机以及服务器来说磁盘往往是性能的瓶颈。2. 如果有条件或者框架支持可以实现进程内缓存我还是推荐使用进程内缓存毕竟类似Redis这样的kv存储和应用程序多数情况不在一台服务器上虽然局域网的速度肉眼看起来非常快但是对于cpu来讲还是让cpu休了一个大假。 至于什么情况下适合应用进程内缓存我觉得有几点需要注意1. 相同的请求或者设置的相同缓存key的请求每次都是同一个服务器上的同一个程序去处理这样这个请求的缓存正常情况下只会产生一份。 如果每次请求都会路由到不同的服务器便会产生多个缓存的副本维护这些缓存数据的一致性是需要代价的。2. 当有新的服务器节点加入或者服务器节点退出的时候不能发生雪崩现象所有缓存请求都穿透到达数据库那是比较要命的。比如可以看一下菜菜以前的文章分布式缓存的一条明路附代码3. 如果缓存的处理服务器发生变化比如由于某种原因开始请求是由服务器A来处理后来A服务器down了现在由服务器B来处理在缓存转移的过程中必须能保证数据的正确性和一致性。4. 程序的进程内缓存必须有过期策略在有限内存大小的情况下合理的使用。推荐使用LRU淘汰算法来保证内存不会撑爆。5. 系统的并发量及其大对性能的要求及其高可以考虑使用进程内缓存。6. 如果是小部分只读数据并且访问量比较大例如经常使用的字典数据等可以考虑使用进程内缓存。 相对于分布式缓存比如Redis进程内缓存有哪些优势呢1. 进程内缓存性能比较高延迟会更小更节省带宽毕竟分布式缓存网络调用的性能和本地调用比起来慢太多2. 由于和应用程序位于同一进程共享相同的虚拟内存所以在状态维护上更容易一些3. 其次进程内的缓存不设计到网络传输所以没有序列化的过程在性能上更胜一筹。4. 进程内缓存的数据类型几乎可以是语言级别支持的任意类型数据类型设计上比大多数分布式缓存设备支持要灵活许多。 在应对高并发的情况下如果有适当的环境菜菜还是觉得进程内缓存为首选另外一点程序要尽量避免线程切换尽量异步化。如果可以最好能预估出缓存数据的大小避免内存泄漏等现象发生。 当然分布式缓存有自己的优势在监控容灾扩展性易用性等方面更胜一筹。至于用进程内还是分布式缓存没有定论能解决业务痛点就是最好的结果写在最后程序如果要想最大程度的提升并发量缩短响应时间 就把用户需要的数据放在离用户最近的地方