缓存
文章平均质量分 83
太阳伞下的阿呆
愿天下的每个阿呆都能拥有一个可以依靠的太阳伞
展开
-
缓存置换算法之LRU/LFU
常见缓存置换算法LRU 最近最久未使用FIFO 先进先出置换算法 类似队列OPT 最佳置换算法 (理想中存在的)NRU Clock置换算法LFU 最少使用置换算法PBA 页面缓冲算法LRU实现原理:链表+hash表查询插入时间复杂度:O(1)代码实现:LinkedHashMapdubbo的工具LRU工具类便是继承自LinkedHashMap:com.alibaba.dubbo.common.utils.LRUCache数据结构HashMap结构基础上,为所有Node节点维护一个原创 2021-07-31 16:35:58 · 390 阅读 · 0 评论 -
缓存一致性问题之缓存模式
上篇文章聊了聊redis框架底层HA与数据库一致性的方案,本篇文章主要介绍redis缓存与数据库之间的一致性问题,以及常用的设计模式缓存模式Cache-as-SoRRead/Write ThroughWrite behind cachingCache AsideCache-as-SoR(system-of-record)Read Through流程读(Read Through)查询缓存模块缓存模块命中直接返回缓存模块未命中,缓存模块查询数据库更新缓存模块并返回Wr原创 2021-07-04 18:24:47 · 218 阅读 · 0 评论 -
缓存一致性问题之主从复制
文章基于redis缓存缓存设计问题不讨论,感兴趣的同学可以入这个传送门:https://blog.csdn.net/u010597819/article/details/104220707缓存一致性问题讨论主要讨论以下两个层次主从一致性缓存与数据库一致性redis主从一致性问题最终一致性以哨兵模式为例说明,主从存在延迟,但保证最终一致性。简而言之主从同步的方案为全量复制,redis fork一个子进程导出rdb文件,并同时记录之后的写命令至缓存(backlog)。rdb同步完成后再将缓原创 2021-06-27 21:22:33 · 279 阅读 · 1 评论 -
缓存穿透、缓存雪崩、缓存击穿
缓存穿透什么是缓存穿透?缓存穿透是指查询大量的key实际不存在例如:数据库中存储的国内34个省级行政区域信息,id是1-34,缓存的key为id。客户查询35、36、0等等实际不存在的key。因为这些数据实际不存在,所以缓存中也无法命中,便需要服务查询数据库,如果大量此类查询会直接导致数据库扛不住甚至宕机等可能性解决方案方案1:将不存在的key缓存起来,超时时间设置得短一些优点:处理...原创 2020-02-08 11:33:54 · 204 阅读 · 0 评论