加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

巧妙设计多级缓存,为数据库减负

发布时间:2018-08-22 23:47:23 所属栏目:编程 来源:DBAplus社群
导读:技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 作者介绍 王梓晨,物流研发部架构师,GIS技术部负责人,2012年加入京东,多年一线团队大促备战经验,负责物流研发一些部门的架构工作,专注于低延迟系统设计与海量数据处理。目前负

有很明显问题是若短时间内被频繁访问多次,比如访问异常或者循环没有控制住,而后很长时间未使用,则此数据会因为频率高而被错误的保留下来,没有被淘汰。尤其对于新来的数据,由于其起始的次数是1,所以即便被正常使用也会因为比不过老的数据而被淘汰。所以维基百科说纯粹的LFU算法不经常单独使用而是组合在其他策略中使用。

5.缓存使用的一些常见问题

Q1:那么应该选择用本地缓存(local cache)还是集中式缓存(Cache cluster)呢?

A1:首先看数据量,看缓存更新的成本,如果整体缓存数据量不是很大,而且变化的不频繁,那么建议本地缓存。

Q2:怎么批量更新一批缓存数据?

A2:依次从数据库读取,然后批量写入缓存,批量更新,设置版本过期key或者主动删除。

Q3:如果不知道有哪些key怎么定期删除?

A3:拿Redis来说keys * 太损耗性能,不推荐。可以指定一个集合,把所有的key都存到这个集合里,然后对整个集合进行删除,这样便能完全清理了。

Q4:一个key包含的集合很大,Redis无法做到内存空间上的均匀Shard?

A4:1、可以简单的设置key过期,这样就要允许有缓存不命中的情况;2、给key设置版本,比如为两天后的当前时间,然后读取缓存时用时间判断一下是否需要重新加载缓存,作为版本过期的策略。

【编辑推荐】

  1. 静默错误:Oracle数据库是如何应对和处理的 ?
  2. 【工具】数据库设计中的6个最佳实践步骤
  3. 面试中有哪些经典的数据库问题?
  4. 从分库分表后遗症,总结数据库表拆分策略
  5. 阿里数据库备份专家:教你pick最有效的备份系统
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读