当前位置: 首页 > news >正文

泰兴企业网站建设做学校网站

泰兴企业网站建设,做学校网站,怎样在网站图片做超级链接,优书网首页正文 在实际的工作项目中#xff0c; 缓存成为高并发、高性能架构的关键组件 #xff0c;那么Redis为什么可以作为缓存使用呢#xff1f;首先可以作为缓存的两个主要特征#xff1a; 在分层系统中处于内存/CPU具有访问性能良好#xff0c;缓存数据饱和#xff0c;有良好…正文 在实际的工作项目中 缓存成为高并发、高性能架构的关键组件 那么Redis为什么可以作为缓存使用呢首先可以作为缓存的两个主要特征 在分层系统中处于内存/CPU具有访问性能良好缓存数据饱和有良好的数据淘汰机制 由于Redis 天然就具有这两个特征Redis基于内存操作的且其具有完善的数据淘汰机制十分适合作为缓存组件。 其中基于内存操作容量可以为32-96GB且操作时间平均为100ns操作效率高。而且数据淘汰机制众多在Redis 4.0 后就有8种了促使Redis作为缓存可以适用很多场景。 那Redis缓存为什么需要数据淘汰机制呢有哪8种数据淘汰机制呢 数据淘汰机制 Redis缓存基于内存实现的则其缓存其容量是有限的当出现缓存被写满的情况那么这时Redis该如何处理呢 Redis对于缓存被写满的情况Redis就需要缓存数据淘汰机制通过一定淘汰规则将一些数据刷选出来删除让缓存服务可再使用。那么Redis使用哪些淘汰策略进行刷选删除数据 在Redis 4.0 之后Redis 缓存淘汰策略62种包括分成三大类 不淘汰数据 noeviction 不进行数据淘汰当缓存被写满后Redis不提供服务直接返回错误。 在设置过期时间的键值对中 volatile-random 在设置过期时间的键值对中随机删除volatile-ttl 在设置过期时间的键值对基于过期时间的先后进行删除越早过期的越先被删除。volatile-lru 基于LRU(Least Recently Used) 算法筛选设置了过期时间的键值对 最近最少使用的原则来筛选数据volatile-lfu 使用 LFU( Least Frequently Used ) 算法选择设置了过期时间的键值对, 使用频率最少的键值对,来筛选数据。 在所有的键值对中 allkeys-random 从所有键值对中随机选择并删除数据allkeys-lru 使用 LRU 算法在所有数据中进行筛选allkeys-lfu 使用 LFU 算法在所有数据中进行筛选 Note: LRU( 最近最少使用Least Recently Used)算法 LRU维护一个双向链表 链表的头和尾分别表示 MRU 端和 LRU 端分别代表最近最常使用的数据和最近最不常用的数据。 LRU 算法在实际实现时需要用链表管理所有的缓存数据这会带来额外的空间开销。而且当有数据被访问时需要在链表上把该数据移动到 MRU 端如果有大量数据被访问就会带来很多链表移动操作会很耗时进而会降低 Redis 缓存性能。 其中LRU和LFU 基于Redis的对象结构redisObject的lru和refcount属性实现的: typedef struct redisObject {unsigned type:4;unsigned encoding:4;// 对象最后一次被访问的时间unsigned lru:LRU_BITS; /* LRU time (relative to global lru_clock) or* LFU data (least significant 8 bits frequency// 引用计数 * and most significant 16 bits access time). */int refcount;void *ptr; } robj;Redis的LRU会使用redisObject的lru记录最近一次被访问的时间随机选取参数maxmemory-samples 配置的数量作为候选集合在其中选择 lru 属性值最小的数据淘汰出去。 在实际项目中那么该如何选择数据淘汰机制呢 优先选择 allkeys-lru算法将最近最常访问的数据留在缓存中提升应用的访问性能。有顶置数据使用 volatile-lru算法 ,顶置数据不设置缓存过期时间其他数据设置过期时间基于LRU 规则进行筛选 。 在理解了Redis缓存淘汰机制后来看看Redis作为缓存其有多少种模式呢 Redis缓存模式 Redis缓存模式基于是否接收写请求可以分成只读缓存和读写缓存 只读缓存只处理读操作所有的更新操作都在数据库中这样数据不会有丢失的风险。 Cache Aside模式 读写缓存读写操作都在缓存中执行出现宕机故障会导致数据丢失。缓存回写数据到数据库有分成两种同步和异步 同步访问性能偏低其更加侧重于保证数据可靠性 Read-Throug模式Write-Through模式 异步有数据丢失风险其侧重于提供低延迟访问 Write-Behind模式 Cache Aside模式 查询数据先从缓存读取数据如果缓存中不存在则再到数据库中读取数据获取到数据之后更新到缓存Cache中但更新数据操作会先去更新数据库种的数据然后将缓存种的数据失效。 而且Cache Aside模式会存在并发风险执行读操作未命中缓存然后查询数据库中取数据数据已经查询到还没放入缓存同时一个更新写操作让缓存失效然后读操作再把查询到数据加载缓存导致缓存的脏数据。 Read/Write-Throug模式 查询数据和更新数据都直接访问缓存服务缓存服务同步方式地将数据更新到数据库。出现脏数据的概率较低但是就强依赖缓存对缓存服务的稳定性有较大要求但同步更新会导致其性能不好。 Write Behind模式 查询数据和更新数据都直接访问缓存服务但缓存服务使用异步方式地将数据更新到数据库通过异步任务 速度快效率会非常高但是数据的一致性比较差还可能会有数据的丢失情况实现逻辑也较为复杂。 在实际项目开发中根据实际的业务场景需求来进行选择缓存模式。那了解上述后我们的应用中为什么需要使用到redis缓存呢 在应用使用Redis缓存可以提高系统性能和并发主要体现在 高性能基于内存查询KV结构简单逻辑运算高并发 Mysql 每秒只能支持2000左右的请求Redis轻松每秒1W以上。让80%以上查询走缓存20%以下查询走数据库能让系统吞吐量有很大的提高 虽然使用Redis缓存可以大大提升系统的性能但是使用了缓存会出现一些问题比如缓存与数据库双向不一致、缓存雪崩等对于出现的这些问题该怎么解决呢 使用缓存常见的问题 使用了缓存会出现一些问题主要体现在 缓存与数据库双写不一致缓存雪崩: Redis 缓存无法处理大量的应用请求转移到数据库层导致数据库层的压力激增;缓存穿透访问数据不存在在Redis缓存中和数据库中导致大量访问穿透缓存直接转移到数据库导致数据库层的压力激增;缓存击穿缓存无法处理高频热点数据导致直接高频访问数据库导致数据库层的压力激增; 缓存与数据库数据不一致 只读缓存(Cache Aside模式) 对于只读缓存(Cache Aside模式) 读操作都发生在缓存中数据不一致只会发生在删改操作上新增操作不会因为新增只会在数据库处理当发生删改操作时缓存将数据中标志为无效和更新数据库 。因此在更新数据库和删除缓存值的过程中无论这两个操作的执行顺序谁先谁后只要有一个操作失败了就会出现数据不一致的情况。 面试准备复习资料分享 为了应付面试也刷了很多的面试题与资料现在就分享给有需要的读者朋友资料我只截取出来一部分哦有需要的可以来找我获取哈 获取方式点击蓝色字体即可免费获取 出来一部分哦有需要的可以来找我获取哈 获取方式点击蓝色字体即可免费获取 [外链图片转存中…(img-bzuPKX53-1624225454343)]
http://www.pierceye.com/news/66177/

相关文章:

  • 北京企业网站seo平台青岛网站建设电话
  • wordpress有游客注册帐号功能长春seo外包方案
  • 邯郸启涵电子商务有限公司seo搜索引擎优化总结
  • html制作电影网站山东济南软件公司排名
  • 北京网站建设收费网站建设与管理维护的答案李建青
  • 给企业做网站 工作wordpress和蝉知
  • 关于网站建设与维护论文wordpress上帝模式
  • 企业网站建设定制网站模板源文件
  • 数码科技网站php网站分类目录程序 网址导航程序 织梦二次开发
  • 做外贸要访问国外的网站怎么办wordpress 旋转预加载
  • wap网站建设设计购物网站建设开发费用分析
  • 做的好的营销型网站有哪些内容我想自己在网站上发文章 怎样做
  • 如何加入小说网站做打字员品牌网站建设S苏州
  • 公众号微网站建设中核集团电子商城
  • 做网站第一部有口碑的南昌网站建设
  • 长沙模板网站长沙网站建设邢台做企业网站
  • 百度免费做网站房子装修设计图用什么软件
  • php网站制作实例教程长沙网站制作费用
  • 推荐网站建设服务商城网站设计实训总结
  • 长春网站设计搜索引擎优化论文3000字
  • 网站后台添加不了图片网站建设运用软件
  • 外贸英文商城网站建设网站建设设计问卷
  • 网站建设 技术方案软件开发专业单词
  • 可以做众筹的网站有哪些产品设计软件有哪些软件
  • 做响应式网站的洛阳网站设计
  • 网站建设项目流程wordpress 自动内链
  • 成都的企业网站建设公司定西建设厅网站
  • 用dw做的网站怎么上传专业的定制型网站建设
  • 上海建个人网站比较好的公司天元建设集团有限公司破产了嘛
  • 网站设计培训学校Wordpress需要更新吗