From dd05c24c8353fab945040c4b021b1b61c7d198dd Mon Sep 17 00:00:00 2001 From: Estom Date: Fri, 3 Sep 2021 06:59:06 +0800 Subject: [PATCH] =?UTF-8?q?lru=E7=AE=97=E6=B3=95=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- C++/典型实现/6 LRU算法.md | 27 ++++++++++++++++++++- C++/典型实现/image/2021-09-03-06-57-17.png | Bin 0 -> 19496 bytes 数据库/数据库.xmind | Bin 34559 -> 37439 bytes 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 C++/典型实现/image/2021-09-03-06-57-17.png diff --git a/C++/典型实现/6 LRU算法.md b/C++/典型实现/6 LRU算法.md index 9f75ce7c..176ee416 100644 --- a/C++/典型实现/6 LRU算法.md +++ b/C++/典型实现/6 LRU算法.md @@ -1,6 +1,31 @@ ## lru最近最少使用算法 -* 使用std::list<>双向链表存储value,主要是符合LRU的业务场景:①首/尾进行插入、删除;②中间位置的删除。其中第②点很重要。 +对于web开发而言,缓存必不可少,也是提高性能最常用的方式。无论是浏览器缓存,还是服务端的缓存(通过memcached或者redis等内存数据库)。缓存不仅可以加速用户的访问,同时也可以降低服务器的负载和压力。那么,了解常见的缓存淘汰算法的策略和原理就显得特别重要。 + +### 常见的缓存算法 +* LRU (Least recently used) 最近最少使用,如果数据最近被访问过,那么将来被访问的几率也更高。 +* LFU (Least frequently used) 最不经常使用,如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小。 +* FIFO (Fist in first out) 先进先出, 如果一个数据最先进入缓存中,则应该最早淘汰掉。 + +### LRU缓存 +像浏览器的缓存策略、memcached的缓存策略、Redis缓存策略都是使用LRU这个算法,LRU算法会将近期最不会访问的数据淘汰掉。LRU如此流行的原因是实现比较简单,而且对于实际问题也很实用,良好的运行时性能,命中率较高。下面谈谈如何实现LRU缓存: + +![](image/2021-09-03-06-57-17.png) + +1. 新数据插入到链表头部 +2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部 +3. 当链表满的时候,将链表尾部的数据丢弃 + +### LRU Cache具备的操作: + +* set(key,value):如果key在hashmap中存在,则先重置对应的value值,然后获取对应的节点cur,将cur节点从链表删除,并移动到链表的头部;若果key在hashmap不存在,则新建一个节点,并将节点放到链表的头部。当Cache存满的时候,将链表最后一个节点删除即可。 +* get(key):如果key在hashmap中存在,则把对应的节点放到链表头部,并返回对应的value值;如果不存在,则返回-1。 + +### LRU的c++实现 +LRU实现采用双向链表 + Map 来进行实现。这里采用双向链表的原因是:如果采用普通的单链表,则删除节点的时候需要从表头开始遍历查找,效率为O(n),采用双向链表可以直接改变节点的前驱的指针指向进行删除达到O(1)的效率。使用Map来保存节点的key、value值便于能在O(logN)的时间查找元素,对应get操作。 + + +* 使用std::list<>双向链表存储value,主要是符合LRU的业务场景:1首/尾进行插入、删除;2中间位置的删除。其中第②点很重要。 * 使用std::unordered_map<>是为了优化查找。此数据结构查找效率O(1)。 * 注意对链表std::list<>的earse操作,特别是迭代器失效的问题。 diff --git a/C++/典型实现/image/2021-09-03-06-57-17.png b/C++/典型实现/image/2021-09-03-06-57-17.png new file mode 100644 index 0000000000000000000000000000000000000000..0638da4eebd457803c7e47ed15822b1c576b90fa GIT binary patch literal 19496 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 literal 0 HcmV?d00001 diff --git a/数据库/数据库.xmind b/数据库/数据库.xmind index 563e6e5cd065264c266381256929be539899047f..e17d971cb05d283f7294b732e5f438e2efafaa47 100644 GIT binary patch delta 19297 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 UyoMYCQ;?I|h93sOkN^Mx0NI1D)&Kwi delta 16402 zcmZX*V{j$R7e07n+qOBeIk9hSV`5I68)stMwryJzTNC?c!U^~Nec0Xq)^?q$)2C7W zrMs*9JkQf#0{ImSiL9ys1&s*!UxBkvM5cp;vv1^975UF4M~Fm$;Or^YO?iH2&58g3 zW?cXP@_*yZogCdQ9o<=N-JBe+{dJQKM_W&fDVF1}k4}X6ipbcVi_aVG9MDL17F>#{ zWHfewsa;hKv)9g{_|(v{vVmgckqgKiI+zBuN&}#C{ZoyVajA@N=z!-7)A(G(u~tkc^CDx0E(aQ$B)PUA_yRAQ$uIcRcDbm5Vu4 ze~U}Us?xi!o8`UiX#aS9fPjdbgZm|ppOe3X!@aiMxYpl7vRjl)i5Os7mKj)%X0kbY zW1RSSIU##T1{bZfvGdbw*Uzt4q~m$o?lOMotGk$~`WW;%u6-j)_+R*98zu9{wk|AO zsK>RWW=%6oYZZ+uiiQlm0~AN|OM!%-2mX=v8#*?iv1e`}n7TGueq98+iT^0U|GS|^TA#GG=s zBq=zXfi9N%D=aOG-yU{u-^Ww;G~Ok6GpfIBouN!iX(Hny->(y-IZQ5EmdhUwqm8dL zwf(%hIqkjY;a8;P!N{BwX+8sMHf&n$`LUOhzJ7>)e#%5#-11yrj7@D`NVmIsJK%in z5(oJIGVz4pxdwA4`I3IF(=YD7kz%$&_0GP(TITf4bv05OVHu?#*NBz$7{Da zi0QKRy#dbAUS#3=dCE#?@q;j+AyU|)^rZE%BQkbGZ02^|LC%!RL6PB`@4B1YmOJZ zEH2_s!=9c zJbp!m$*EU+1m;IxM-!WeZ$m9!9_c=YA5g|?KkK`lGs|fXgCfrQGoNQw!|AcAr3K2W z-I&KrGBM=-9J?)gT=>%^NwOi;8pg}?omwt!3M{93Tz+k(HhJTd9g8~8mwsupfQFps zHJ?v!+HaMm=4+<&ERa`ehS%FL5tmSh3JxZ8xU|?wz_BMSHMR>~EmU^D6IRAQ!;z@2 zj7?1~3cjrHq(ALS=^1LVV??H-c*|msm}OC(sS&l51RP!U8uVlir!Mw@p)bY;m2(Y) zbHdU**Rl@T(YU{_*!FiSD-Pa#LBkHLupB^Qen}K-o4a(p)v*GlpCYV&U*`8tA_+5- zu*i8h`YS_cW6-BwS`!VbIdHE`n&%Kc0-pQ&sF7+_6h;{+&;yPI<85>0N32%d4$4K&(3Q$>%#XsUYmMc zdkebKSN(I(jIw_PWv{YqY9(A*k9qB%rSY~YUK7UaB+y9tMPwcRhJjV95(?xpSgyM9eP z_IC6iBrpHKA$HZ(>&CypAOG$iH62zQwEABxfUOV!7l4c-UK~$#1+ynxo(8^ z@HvJDznrnSCoEM(U_iDs0pFm~f+1Q*vT65+B(a+hebK2e87SfzPQ*Rr5TDIkrO+Iv9C7~2BTgqQoR)kz@

?knGt`*KkpW|xW((%2G$jWo!Vk?K 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