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

哪个网站可以专门做产品推广设计师图片素材网站有哪些

哪个网站可以专门做产品推广,设计师图片素材网站有哪些,西安网站维保公司,wordpress需要多大内存概述 我们知道#xff0c;Redis 提供了高性能的数据存取功能#xff0c;广泛应用在缓存场景中#xff0c;既可以提升业务的响应速度#xff0c;又可以避免把高并发的请求发送到数据库。 如果 Redis 做缓存时出现了问题#xff0c;比如说缓存失效#xff0c;那么#x…概述 我们知道Redis 提供了高性能的数据存取功能广泛应用在缓存场景中既可以提升业务的响应速度又可以避免把高并发的请求发送到数据库。 如果 Redis 做缓存时出现了问题比如说缓存失效那么大量请求就会直接积压到数据库给数据库带来巨大的压力很可能导致数据库宕机。 正是因为 Redis 用作缓存的普遍性以及它在业务应用的重要作用所以我们需要系统的掌握缓存的一系列内容包括工作原理、替换策略、异常处理和扩展机制。 具体来说需要解决四个关键问题 Redis 缓存是如何工作的Redis 缓存满了该如何处理为什么会有缓存一致性、缓存穿透、缓存雪崩、缓存击穿等异常该如何处理Redis 的内存比较有效如果用快速的固态应用来保存数据可以增加缓存的数据量那么 Redis 缓存可以使用快速固态硬盘吗 1.缓存的特征 首先你要知道一个系统中的不同层之间的访问速度不一样所以我们才需要缓存这样就可以把一些需要频繁访问的数据放在缓存中以加快他们的访问速度。 下图是计算机系统的三层存储结构以及他们各自的常用容量和访问性能。 图中可以看到CPU、内存、磁盘这三次的访问速度从几十 ns 到 100ns再到几 ms性能差异很大。 想象一下如果每次 CPU 都处理数据时都要从 ms 级别的慢速磁盘中读取数据然后再进行处理那么CPU 只能等磁盘的数据传输完成。这样一来高速的 CPU 就被慢速的磁盘拖累了整个计算机系统的运行速度就会变得非常慢。 所以计算机系统中默认有两种缓存 CPU 里面的末级缓存即 LLC用来缓存内存中的数据避免每次都内存中存取数据内存中的高速页缓存即 page cache用来缓存磁盘中的数据避免每次从磁盘中存取数据。 和内存相比LLC 的访问速度更快跟磁盘相比内存的访问是更快的。所以我们可以看出来缓存的第一个特征在一个层次化的系统中缓存一定是一个快速子系统数据存在缓存中时能避免每次从慢速子系统中存取数据。 对应互联网来说 Redis 就是快速子系统而数据库就是慢速子系统了。 了解这一点你就可以理解为什么必须想尽办法让 Redis 提供高性能的访问。因为如果访问速度很慢Redis 作为缓存的价值就不大了。 再看下计算机分层结构。LLC 的大小是 MB 级别page cache 的大小是 GB 级别而磁盘的大小是 TB 级别。其实这包含了缓存的第二个特征缓存系统的容量大小总是小于后端慢速系统的我们不可能把所有数据都存放在缓存系统中。它表明缓存的容量终究是有限的缓存中的数据量也是有限的肯定是没有办法时刻满足访问需求的。所以缓存和慢速系统之间比如存在数据写回和再度取的交互过程。简单来说缓存中的数据需要按一定的规则淘汰写回后端系统而新的数据又要从后端系统中读取出来写入缓存。 Redis 本身是支持按一定的规则淘汰数据的相当于实现了缓存的数据淘汰其实这也是 Redis 适合用作缓存的一个重要原因。 2.Redis 缓存处理请求的两种情况 Redis 用作缓存时我们会把 Redis 部署在数据库的前端业务应用在访问数据库时会先查询 Redis 中是否保存了相应的数据。 根据数据是否在缓存中会有两种情况。 缓存命中Redis 中有相应的数据就直接读取 Redis 性能非常快。缓存缺失Redis 中没有数据从后端数据库中读取数据性能就会变慢。而且一旦发生了缓存确实需要把确实的数据写入 Redis这个过程叫做缓存更新。缓存更新涉及到保证缓存和数据库之间数据一致性问题。 下图演示了发生缓存命中或缺失时应用读取数据的情况。 使用 Redis 缓存时基本有三个操作 应用读取数据时先读取 Redis发生缓存缺失时需要从数据库读取数据发生缓存缺失时还要更新数据 那么这些操作由谁来做呢这和 Redis 缓存的使用方式相关。接下来就分析下 Redis 作为旁路缓存的使用方式。 3.Redis作为旁路缓存的使用操作 Redis 是一个独立的系统软件和业务应用程序是两个软件当我们部署了 Redis 实例后它只会被动地等待客户端发送请求然后再进行处理。所以如果应用程序想要使用 Redis 缓存我们就要在程序中增加相应的代码。所以我们把 Redis 称为旁路缓存。也就是说读取缓存、读取数据库和更新缓存的操作都是在应用程序中来完成。 使用 Redis 缓存时我们需要在应用程序中增加三方面的代码 当应用程序需要读取数据时需要在代码中显示调用 Redis 的 GET 操作接口进行查询如果缓存缺失应用程序需要再和数据库连接从数据库中读取数据。当缓存中的数据需要更新时也需要在应用程序中显示地调用 SET 操作接口把更新的数据写入缓存。 下面是伪代码示例 String cacheKey productid_1; String cacheValue redisCache.get(cacheKey); if ( StringUtils.isNotEmpty(cacheValue)) {// 缓存命中return cacheValue; } else {// 缓存缺失cacheValue getProductFromDB();// 缓存更新redisCache.put(cacheValue) } 可以看到为了使用缓存Web 应用程序需要有一个表示缓存系统的实例 redisCache还要主动调用 Redis 的 GET 接口并且要处理缓存命中和缓存缺失时的逻辑例如在缓存缺失时需要更新缓存。 需要注意的是因为需要新增代码来使用缓存所以 Redis 不适用于哪些无法取得源码的应用。 在使用旁路缓存时我们需要在应用程序中增加操作代码增加了使用 Redis 缓存的额外工作但是正是因为 Redis 是旁路缓存是一个独立系统我们可以单独对 Redis 缓存进行扩容或者性能优化。而且只要保持接口不变应用程序中增加的代码就不用在修改了。 除了在从 Redis 缓存中查下、读取数据以外应用程序还可能会对数据进行修改这是我们既可以在旁路缓存中修改也可以在数据库中进行修改该如何选择呢 这涉及到了 Redis 缓存的两种类型只读缓存和读写缓存。 只读缓存能加速读请求读写缓存可以同时加速读写请求。而且度企鹅缓存又有两种数据写回策略可以让我们根据业务需求在保证性能和保证数据可靠性之间进行选择。 4.缓存的类型 根据 Redis 是否接收写请求把 Redis 分成只读缓存和读写缓存。 4.1 只读缓存 Redis 用作只读缓存时应用要读取数据的话会先调用 Redis GET 接口查询数据是否存在。而所有的数据写请求会直接发往数据库在数据库中增删改。对于删改的数据来说如果 Redis 已经缓存了相应的数据应用需要把这些缓存的数据删除Redis 中就没有这些数据了。 当应用再次读取这些数据时会发生缓存缺失应用会把这些数据从数据库中读出来并写到缓存中。这样一来后续再被读取时就可以直接从缓存中获取了能起到加速的效果。 假设业务应用要修改数据 A此时数据 A 在 Redis 中也存在了那么应用会直接在数据库里修改 A并把 Redis 中的 A 删除。等到应用需要读取数据 A 时会发送缓存缺失此时应用从数据库中读取 A并写入 Redis以便后续请求直接从缓存中直接读取。 只读缓存在数据库中更新数据的好处是所有最新的数据都在数据库中而数据库是提供数据可靠性保证的这些数据不会有丢失的风险。当我们需要缓存图片、短视频这些用户只读数据时就可以使用只读缓存这个类型了。 4.2 读写缓存 对于读写缓存来说除了读请求会发送到缓存进行处理直接在缓存中查下数据是否存在所有的写请求也会发送到缓存在缓存中直接对数据进行增删改的操作。此时得益于 Redis 高性能访问特性数据库的增删改操作可以在缓存中快速完成处理结果也会快速返回给业务应用这就可以提升业务应用的响应速度。 但是和只读缓存不一样的是在使用读写缓存是最新的数据是在 Redis 中而 Redis 是内存数据库一旦出现掉电或宕机内存中的数据就会丢失。 所以根据业务应用对数据可靠性和缓存性能的不同要求我们会有同步直写和异步写回两种策略。学习了解这两种策略可以帮助我们根据业务需求做出正确的设计。 同步直写是指写请求发给缓存的同事也会发给后端数据库进行处理等到缓存和数据库都写完成才返回给客户端。这样即使缓存宕机最新的数据仍然保存在数据库中这就提供了数据可靠性的保证。 不过同步直写会降低缓存的访问性能。这是因为缓存中处理写请求的速度是很快的而数据库处理写请求的速度较慢。即使缓存很快地处理了写请求也需要等待数据库处理完所有的写请求才能给应用返回结果这就增加了缓存的响应延迟。 而异步写回策略则是优先考虑了响应延迟。此时所有写请求都现在缓存中处理。等到这些增改的数据要从缓存中淘汰出来时缓存将它们写回后端数据库。这样一来处理这些数据的操作是在缓存中进行的很快就能完成。只不过如果发生了掉电而它们还没有被写回数据库就会有丢失的风险了。 关于选择只读缓存还是读写缓存主要看我们对写请求是否有加速的需求。 如果需要对写请求进行加速我们选择读写缓存。如果写请求很少或者是只需要提升读请求的响应速度的话我们选择只读缓存。 例如在商品大促的场景中商品的库存信息会一直被修改。如果每次修改都需到数据库中处理就会拖慢整个应用此时我们通常会选择读写缓存的模式。而在短视频 APP 的场景中虽然视频的属性很多但是一般确定后修改并不频繁此时在数据库中进行修改对缓存影响不大所以只读缓存模式是一个合适的选择。 5. 小结
http://www.pierceye.com/news/822040/

相关文章:

  • 免费好用的网页制作软件网站建设优化开发公司
  • 跟我一起做网站pdf电驴建设网站公开教学视频
  • 广州网站制作商怎样查看网站的权重
  • 网站群建设标准最好的响应式网站
  • 石家庄市建设厅网站网页网页设计班
  • 网站首页怎么设计公司网页制作培训试题
  • 虚拟主机怎么做网站新seo排名点击软件
  • 买服务器做网站 镜像选什么网页设计用的软件
  • 内江 网站建设网站后台登录地址
  • 网站建设合同副本临沂建设局官方网站
  • 林州网站建设哪家好网站做电子链接标识申请好吗
  • 石家庄开发网站建设263企业邮箱登录邮箱
  • 青岛公司建设网站电子商务网站开发技术论文
  • 龙华网站的建设建设网站教程视频视频
  • 威海高区建设局网站品牌网站建设多少钱
  • 网站php网站空间新乡河南网站建设
  • 你第一个物流网站建设方案信诚网络公司网站
  • 企业建站什么网站好wordpress管理员后台
  • 南京网站开发价格两个wordpress共用一个数据库
  • 番禺制作网站平台柳城网站制作
  • 网站建设相关视频教程网页设计布局有哪几种方法
  • 能接做网站的活的网站上海建网站方案
  • 免费网站软件app大全飘雪影院手机免费观看免费
  • 怎么做类似淘宝的网站石家庄网络开发公司
  • 专业SEO教程网站广东省住房与城乡建设部网站
  • 360免费建站为什么注册不了雨灿网站建设
  • 益阳市建设局网站在家来料加工
  • 邵阳网站设计宠物网站 html模板
  • 网站域名以co与com有什么不同18款禁用黄a免费
  • 农村电商网站建设方案wordpress官网密码错误