第0 5卷 6期 2 1 6年第11 月 网 络 新 媒 体 技 术 Vo N I . 5NO . 6 OV.2016 Me mcached的分 析 与 改进 李首扬 ( 北 京 大学 杨 计算机 系 仝 北京 代亚非 1 00871 西 京 学 院控 制 工 程 系 黄 亮2 郑廉清 94782部 队 65分 队 西安 杭州 310021 71 0123) 摘 要 :Me mcac hed是一 种高 性 能 分 布式 内存 对 象 缓 存 系 统 , 使用十分广泛 ; 其 设 计 目的 为缓 存 数 据 库 内 容 以加 速 动 态 Web请 求 ,但 也 广 泛 应 用 于 其 他 高 性 能 存 储 , 并 且 成 为 了 内存 Key—Val ue数 据 库 的经 典 代 表 。本 文 对 Memcae hed的 系 统 结 构 、处 理 流 程 进 行 了分 析 , 包 括 网 络 处 理 、哈希 表 的查 询 与 维 护 、 内存 的 分 配 与 管 理 、 冷 数据的置换算 法等 ; 同 时 以 哈 希 表 、内存 管 理 这 两 个 影 响性 能 的关 键 点人 手 , 结 合 了 Cuckoo哈 希 与 CLOCK置 换 算 法 两 种 更 易 并 行 化 的 的 算 法 , 对 Memcached现 有 的 结 构 提 出 了较 大 的 改动 ,以期 提 高 上 述 处 理 速 度 , 实 现 整 体 性 能 的提 升 。 关 键 词 :内存 缓 存 系统 , Me mcache d, 哈 希 表 ,内存 管 理 , 缓存置换算法 Anal yzi ng and i m provi ng m em cached LIShouyang ,YANG Tong。 DAIYaf ei ,H UANG Li ang ,ZHENG Li anqi ng , ( Depar t me ntofComput e rSci ence,Pe ki ngUni ver s i t y,Bei j i ng,100871,Chi na, 。65 Ot ryad 94872 PLA t roops, Hangzhou,310021,Chi naa, , Depar t mento fCo nt r olEgi neer i ng,Xi j i ngUni ver si t y,Xi ’a n,7101 23,Chi na) Abst ract:Me mc ached,awi del yus edmemo r yobj ec tca chi ngsys t em,i sat ypi c alcaseofi nmemo ̄ ke y—va l ues t or i ngorcac hi ngsys — tems. Thi s paperanal yzed t hearchi tecture ofmemcached,i ncluding net wor k processing,struct ureofthe hash tabl e,m anagi ngmem o ̄ all ocat ion, and t he cache repl acementalgori t hm. Focusi ng on t wo f iel ds: t he hash t able str uct ure,and t he memo ̄ m anagementpoli — ti cs,which have asi gni icanti f mpacton the perf ormance and scalabil i tyofthe system ,thi s arti cl e int roducesnew al gori thms,i m provi ng the performance oft he par all el izing memo ̄ caching system . I nt hi s ar ti cle,we combi ne Cuckoo hashing,a hashing scheme opti mized forpar all elaccessi ngand sceneswhen r ead requestsare greatl y morethan wri t e request s;and a cache replacem ental gori thm ,the cl ock algori t hm ,t o archive higherprocessing rat e,wit h an accept able l ossofcache hi trat e. K eywords:m emory cache system ,m emcached, hash t able,m emo ̄ management, cache r epl acemental gori thm 1 引言 Me mc ac he d¨ 是一 种应 用十 分 广 泛 的 内存 对 象 缓 存 系统 , 其 设 计 目的 为 缓 存 数 据 库 内 容 以 加 速 动 态 We b请 求 , 但也 广泛 应用 于其他 方 面 。作 为 内存 Key—Va l ue存储 系统 的代 表 , Memca che d采 用 的“使 用 哈希 表查 找对 象 , 并 通 过 自行 管理 内存 提高使 用效 率 ”的整体 框架 被各 种 Ke y—Val ue存储 系统 使用 , 成 为了 内存 本 文 于 2015—08—1 9收 到 。 }基 金 项 目 :国 家 自 然 科 学 基 金 重 点 项 目 (编 号 :61 2320 04),国 家 “9 73”课 题 (编 号 201 4CB34040 0),国 家 重 点 研 发 计 划 课 题 (201 6YFB1 00 03 00), 国家 自然 科 学 基 金 ( 61 6720 61), 中 国科 学 院声 学 研 究 所 合 作项 目“分 布 式 缓 存 客 户 端 定 制 开 发 ”。 6期 李首 扬 等 :Memca ched的分 析与改 进 39 存 储 的范 例 。 本 文 对 Me mcac hed的结 构进 行 了分析 , 着 重研究 了哈希表查 询与 管理 、内存 的分 配 管理 这两 大方 面 , 并 对这 两方 面进行 了 比较大 的改 动 , 引入新 技术 提升 整个 系统 的效 率与性 能 。 2 Me mc ac he d的 主 要 模 块 … 垡矍… …… … … … ~ … Me mcac hed在启 动 时创建 多个 线 程 , 并 行 处理 请 求 ;同 时有单 独 的 LRU(Leas tRec ent l yUs ed)对 象 管 理 线 程 与 内 存维 护线 程 。整个 系统 的运行 流程 如 图 1所 示 。 2.1 I /O 处 理 与 请 求 解 析 Me mc ac hed使 用 l i bev ent 库 处 理 网 络 请 求 。l i be ve nt 是一 个开 源 的异步 事件 处 理库 ,它提 供 了一组 API, 让程序 可 以设 定 在 I /O事件 发 生 时 , 调 用 一 定 的 函数 处 理 请 求 内 容 。l i be ve nt支 持 e po l l等 1 0监 控接 EI, 提供 了较 高 的性 能 。 i[二 根据设 置 , Me mc ac he d启 动若 干个 独 立线 程 , 然 后 将 它们 共 同绑定 到 由 l i bev ent管理 的 网络端 口或 文件 管道 ,以实现 多 至 = 二 ] 图 1 Me mc ached的整 体 结 构 与 处 理 流 程 线程 接 收并处 理 同一 端 口请 求 的 目的 。 当接 受 到 请 求 ,网 络处 理模 块解 析其 中内容 , 转 换为 Memca ched内部 数据 结构 , 并 调用 对 应 函数 进行 处理 。此 系统 较 为成 熟 , 并且 为第 三方 提供 , 研究 多集 中在 将其 整 体 更 换 为硬 件优 化 的 网络 处 理库 等 ,与 内存 存储 系统 的特性 也 关 系不 大 , 本文不 加 以详 细研究 。 2.2 哈 希表查 询 与修 改 Me mc ac he d使 用哈 希 表查 找请 求 的键 值 。 哈希 算法 默 认 为 j enki ns算 法 , 可更 换 为 mur mur 3算 法 ; 当发 生 冲突 (两个对 象 的哈希 值相 同 )时 , 使 用链 式哈 希处 理 : 在 哈希 值对 应 位置 创建 一 个链 表 , 链表 中记 录 哈 希值 相 同的所有 对象 , 查 找时逐 一 比对 。Me mc ac he d对 哈希 表 主要 做 了髑个 特殊 处理 : (1)大小 可变 的 哈希 表 。Me mc ac he d的哈希 表大 小为 2的整 数次 幂 , 便 于在计 算 机 中保 存与 处 理 ;当哈 希 表被 “填满 ”, 大 于一定 阈值 时 , Me mc ac he d会 重建一 个 容量 为两 倍 的表 , 将 所有 键值 根 据新 的表大 小重 新 计 算 哈希值 , 并将 对象存 入新 表 。 (2)哈希 表分 区锁 。 当对 哈希 表 内容进 行修 改 时 , 可 能会 出现 多线 程竞 争 问题 ; 使 用全 局锁 将造 成性 能 瓶颈 , 对 每个 表项 单独 加锁会 浪 费大量 内存 、当进行 重建 时也 可能会 严重 影 响效率 。 如 图 2, Memca che d将 哈 希 表按 照键 值 分 为 若 干个 区 , 每个 区中 的对象共 用 一个锁 ;由于线程 数量 远小 于 “区 ”数 量 , 分 区锁 l ock1 i t m7 与表项 单独 加锁 性 能 差距 并 不 大 ,同时 也 减 小 了 锁 占用 的空 间 和时 间 。在 实践 中 , 根 据线 程数 量 , 分 区数 目为 1 024至 81 92不 _ 叫! 竺l — l ock2 等, 并 为 2的整数 次幂 , 这样 “判定 哈 希 表项 所 属 区 ”的 “二次 哈 _ + 1 — 希”只需单 次位运 算 即可完 成 , 保 证 了性 能 。 H l l ock3 2. 3 内存分 配与 管理 i t m4 应用中, 读写 的对 象 大 小 不 一 , 并且读写十分频繁 , 对 内存 管理提 出 了很 高 的要 求 。系 统 需 要快 速 分 配 不 同大 小 的 内存 , . 同时在 大量 的修 改与 删除 之后避 免 内存碎 片化 , 保证 高 利用 率 。 . . . . . . . . . . . . . . . . . .. . . . . .. . . .. .. .. .. .. .. .. .. .. . .. .. .. .. .. . . .. . . . . . . . . . . . . . . . . . . . . .. . . . 图 2 Me mcac hed的拉 链 法 哈 希 表 与 分 区 锁 如 图 3, Memcac hed将 内存 划 分 为 若 干 页 (pag e), 每 页 大小 为 1MB; 每 页分为若 干个 大小 相 同的片 (s l a b),片的大 小从初 始值 开始 ,以指数增 长 , 下 一级 的片大 小 为上 一 级 的 1. 25倍 , 直 至最 大 的片 占满 整 页。 40 一 网 络 新 媒 体 技 术 201 6正 在分 配 内存 时 , 系统将 申请 的 内存 大 小 “向上 取整 ”至最 近 的 page1 个 片大小 , 并取 出一 个空 闲片 ; 释 放 内存 时 , 整 片 内存 回到 系统 s lab1 中 ;当某种 大小 的 片全 部 被 分 配 时 , 则 尝 试 申请 一 个 整 页并 划 分 成需 要 的大小 。这种 分 配 方法 以少 量 的 内存 浪费 (不 超 过 20% ) s lab2 s lab3 sl ab4 为代 价 , 将 大小 千差 万别 的对象 统 一 到 了不 到 20个 阶层 , 阻止了 内存 碎 片化 的产生 。 2.4 内存 缓存 置换 以 LRU算 法 为代 表 的缓存 置 换算 法 是 Memca che d等缓 存 系 统 的核心 之一 ,由于 内存 容量 有 限 ,系 统需 要 适 时 丢 弃 访 问 频 次 较低 的对 象 (或 移 动 至读 写 速 度 较慢 的外 存 )。如何 选 择 被 丢弃 的对 象 以提 高 缓 存 命 中率 ,同时 又 尽 量 降 低 维 护 对 象 热 度 的 开 销, 一直是 研究 的热 门话 题 。Me mc ac hed对 不 同大 小 的 “片 ”独立 图 3 Memc ached的 内存 分 片 结 构 处理 , 分别 独立 进行 缓 存 置换 ,由 内存 管 理 部分 来 协 调 “阶层 ”之 间 的 内存 分配 。Memc ac he d使 用两 种缓 存 置 换 算法 ,一 种是 “标 准 LRU”, 一 种 我们 暂且 命 名 为 “分 层 近 似 LRU ”。 (1)标 准 LRU。标准 LRU是 简单 明确 的实 现 了严 格 的 LRU(最近 最少使 用 )算 法 , 丢弃 的对象 始终 为 最 近一 次访 问距 今时 间最久 的对 象 。对 每个 片 大小 的“层 级 ”, Memc ac hed维护 了一 个 双 向链 表 , 将所有对象 连在 一起 ;当一个对 象被 访 问时 , 将 其从 链 表 中“弹 出 ”, 然 后再 加 入 链表 头 。这 样 , 整个 链 表 按 照最 近 访 问 次序 排序 ,当需 要丢 弃对 象时 , 直接 从链 表尾部 选 取对象 , 根据 其属 性进行 处 理 即可 。 (2)分层 近似 LRU。此算 法是 Memca che d新 版本 中引 入 的可选算 法 。它并 不是 严 格 的 LRU算法 ,而是 在上 述标 准 LRU 的基础上 做 了一些修 改 和简化 。 标准 LRU无 论读 还是 写 , 都会触 发链 表操 作 , 将 对象 移 至链 表 最 前 ; 在 Memc ac he d的实 际应用 中 , 对数 据 的访 问均为 读多 写少 ,同时访 问频率 明 显不 均 衡 ,大 部 分访 问集 中在少 数 对 象 ; 这 种 情 况 下 ,少部 分 热 对 象会 被频 繁移 动 , 拖 累整 个 系统 的性能 。 Me mc ac hed首先 去 掉 了所 有读请 求 的链表 移 动操作 , 仅会 更新 对象 的最 近访 问时 间 ,由扫 描链 表 尾 部 的 回收 函数 判定 对象 并非 “冷对 象 ”而 重新加 人链 表 ; 实 际应 用 中 , 这 一步便 可剩 下大 量链表 维 护操作 。 简单 的忽 略读请 求 会使得 LRU链 表 中热度 混杂 , 失 去其本来 的意义 ; 为 了与其 配合 ,同时也 进一 步优化 性能 , Me mc ac hed如 图 4将每 个 “片 层 级 ”的链 表 拆 分 为热 丢弃 (HOT)、温 (WARM)、 冷 (COLD)三个 层 级 , 分 别 保 存 三种 热 度 的对 象 , 在 置换 对 象 时, 对三个 表分 别处 理 。创 建 新对 象 时 , 新 对 象 均 会 进入 热 表 ,这 里 的对 象 会 接 受 较少 的移 动 ,以尽量 提升 少数 热对 象 的访 问性 能 ;而访 问频 次较 低 的对 象 并 不会 直 图 4 热 度 分 层 LRU的 移 动示 意 观 的从热 到温 再到冷 ,而是 无 论 原 先 在热 表 还 是 温 表 ,均会 被 移 动 至 冷 表 , 对象一 旦 “变 冷 ”, 就 只能变 “温 ”而无法 重新 进入 热表 , 而在 这两 个表 内对象 将会 被更 大概 率 的被 移 出或丢 弃 。 这种算 法 缺点 十分 显而易 见 : 一 个对 象永 远不 会从 “冷 ”回“热 ”,当它 被频 繁访 问时 可能 会 降低性 能 ; 但 从实 际应 用 出发 , Memca ched面对 的热数 据大 多数 为新数 据 , 此算 法能 避免被 偶然访 问的冷数 据 与热 数 据争 抢资 源 , 实际 性能 得到 了提升 。 3 对 哈希 表 和 内存 管 理 模 块 的 改进 哈希 表被 广泛 应用 于多个 领域 , 包括 路 由表查 找 , 布隆过 滤器 ’ 等 。哈希 表 的查 询 与 维护 、内存 的 分配 与管 理 (包 括对 象置 换 )是 内存缓 存 系统 的核 心 , 这 两方 面 的算 法 设计 直接 影 响 了 整 个 缓存 系统 的性 能 。如上 文所 述 , Memca ched在这两 方 面采用 的是 较为 简单成 熟 的方案 , 随后 根据 实 际应用进 行 一些 变 通 与 6期 李首 扬 等 :Memca ched的分 析与改 进 41 优化 ; 这样 的架 构有着 很 大 的提 升 空间 。一直 以来 , 学术 界 都 在对 这些 方 面进 行 改进 , 根 据 不 同 的情景 提 出 新 的算法 。针 对实 际应用 场景 中 , 读 多写 少 , 并 且硬 件 高 度并 行 化 的 特 点 , 本 文 结 合 Cuc koo哈希 与 CLOCK 置换 算法 , 提 出 了在 高并 发场 景下 提升 Memca c he d性 能 的解决 方案 。 3.1 哈 希 表 一Cuckoo与 DCuckoo Memcac hed的哈 希表结 构 虽然 哈希 函数本 身性 能优 秀 , 但 仍然 是单 哈希 函数 、拉链 法处理 哈 希 冲突 的传 统 哈 希表 ; 其分 区锁 机制也 只 能说是 针对 高并 发 的变通 优化 , 并未 能利 用如今 高 度并行 化 的硬件 。 本文 直接更 换 哈希表 结构 , 思想 是利 用应 用读 多写 少 的特 性 , 将查 找 操作 尽 量并 行 化 处理 , 考 虑取 舍 牺 牲一 定修 改操 作 的性 能 。选择 的结 果是 DCuc koo哈希 : DCuc koo¨ 哈 希 由 Cuc koo哈 希 演 变 而 来 。Cuc koo 哈希 使用 多个 独 立 的哈 希 函 数 , 对 每 个 请 求 的键 值 计 算 出这 独 立 的若 干 个 函数 ,查 找 对 象 时 , 查 询 所 有 函数 位 置; 对 读操 作 , 任 意 一个 函数 位 置命 中则 为 命 中 , 全部未 命 中则为查 找 失 败 ; 对 写 操 作 ,有 任 意 位 置 为 空 则 插 入 , 当各 位置都 已满无 法 插 人 新 对 象 时启 动 “踢 ”算 法 : 如图 5, 有 两个 哈希 函数 , 每 个 对 象 引 出 的箭 头 指 向对 象 另 一 个 哈 希 函数 的位 置 , 左 图新 插 入 的对 象 所 对 应 位 置 分 别 被 A与 C占据 ; 对象 “踢走 ”A, 使 A到 自己另一 个 哈希 函 数 的 B位置 ; 而 A递 归 踢走 B,最终 形 成 了右 图 的结 果 。 关 于哈希 函数 的数 量 、“踢 走 ”哪个 对象 的选择 , 都 是 可定 义 内容 。Cuc ko o哈希 的一个 缺点 是它 的 “踢”操 作可 能会 陷入 死循 环或 者 很 难 得 到 结 果 , 在 应 用 中一 般 是 设 置 若 干次 (如 500)次 “踢 ”操 作 还 未 插 入 , 则 认 为 本 次插 入 失 图 5 Cuckoo哈 希 插 入 示 意 图 败; 对 于缓 存 系统 , 此 时也 可 以考虑 将 路 径 上某 一 个 对象 直接 置换 丢弃 掉 , 从 而保 证新对 象插 入 的成 功 , 两个 选 择都是 可 以接受 的 ; DCucko o则 是 结 合 了 Cuc koo哈希 与另 一种并 行 哈希算 法 , D—l e f t哈希 ;D—l ef t中 , 哈 希 表被 分 为 D个 子 表 , 每 个 表 有各 自的哈 希 函数 ; 插入 时, 在 D个 子表 中选 择最 “空 ”的 表插 入 ; 查询 时, 则 是 并 行 查 询 。DCucko o结 合 了两个 哈希 算 法 的特 点 , D 个子 表均 可实 行 Cucko o的 “踢 走 ”操作 , 实现 了更 高 的哈希 表装 载率 与更好 的并 行度 。 3. 2 内存 管理 一CLoCK 算 法 Me mc ac hed采用 的按 大小 分级 、 随后 采 取进 行 标 准或 修 改 版 LRU 方法 可 以提 供 较好 的性 能 , 但 对要 求 极高 并发 , 而不 太要 求数 据持久 性 的 内存 缓存 系统 而 言还有 很大 的提 升空 间 。 一 个 重要 思想 就是 “近似 LRU”, 并 不 严格 维 护 LRU关 系 ,而是 通 过 一些 算 法 , 尽 可 能让 被 丢 弃对 象 是 系统 里较 老 的对象 。实践 中著 名 例子 是 Redi s … :其并 不 维 护节 点 的 LRU顺 序 关 系 , 而 是从 整 个 内存 中 随 机抽 取 一定 数量 的对象 , 从 中选择 “最 旧 ”的对 象并 丢 弃 。这 种 随机 化算 法 理论 效果 会 差很 多 , 但在 实 际测 试表 现 中 , 其 与 LRU的命 中率并 没有 非 常大 的 区别 , 而其 维 护简便 的优 点可 以带 来 明显 的性 能提 升 。 在近 似 LRU算法 中, 一 个代 表是操 作 系统 内存 管 理 经 常使 用 的 CLOCK算 法 ¨’ ” :内存 以块 为单 位 进 行分 配 与释放 , 并不 维护 LRU的链表 , 而 是 为每 一 个 块维 护 一 个 “热 度 ”的参 数 ;当对 一个 块 内对 象进 行 访 问 时 ,“热 度 ”提 升 , 而下 降 由一 个单 独 的“指针 ”线 程完 成 。指针线 程 就像钟 表里 的指 针一样 , 不 断地 扫过 每 个 区块 , 对 其指 向的块进 行 “降温 ”操 作 ;当一 个块 降到 “冰 点”以下 , 那 么它 就可 以被 回收 。 3. 3 结合 新算 法 的流程 与优 势 使 用 Cuc ko o哈希 与 CLOCK近 似 LRU算法 后 , Memca che d的性 能 可 以得 到 提 高 ,可并 发 程 度 有 明显 的 改善 42 网 络 新 媒 体 技 术 201 6正 首先 , Cuckoo哈希 的多哈希 算法 相互 独立 , 可 以做到 完全 并行 ; 无 论 是在 多 核分 别 运行 , 还 是 在 GPU等 众核 平 台分块 计算 , 都 十分方便 移植 应 用 ;之后 , 对 每 一 个 哈希 结 果 都 只有 一 次 访 存 与判 断 , 没 有 任 何链 表 之类 的扫 描操 作 , 使 得查 询时 间严格 达 到 O(1), 在 SI MD(单指 令流 多数 据流 )类 并行 系统 上可 以高效 运行 。 在 哈希表 查询 到对 象之后 , CLOCK算法 免去 了对 LRU哈 希表 的繁 琐维 护 与整 个链 表加 锁 的性 能 瓶颈 , 对数 据热 度 的维护 简化 为每个 数据 块独 立 的变量 加 减 , 与 单 独线 程 的 内存 扫描 , 在 最 大 程 度上 减 少 了 系 统 并行 化 的瓶颈 , 易 于扩展 到更 多 的线 程数 量 。 4 结束语 Me mc ac he d作 为 内存 缓存 系统 的代 表 , 结构 清 晰 , 算法 较 为传统 , 可提 供稳定 的 服务 , 但 面对 当前 硬 件 发 展及 并发 访 问要求 的提 高 , 其架 构 已经遇 到瓶 颈难 以提 升 。本文 以 Memca c he d为样 本分 析 了 内存缓 存 系 统 的结 构 和操作 流程 ,同 时对 哈希 表 与 内存 管 理 两个 核 心模 块使 用 替 代 算 法 进行 优 化 ,提 高 了系 统 的并 发 性能 。 参 考 文 献 Dor ma ndo.memcached — a di s t r i but ed me mo ̄ obj ec tc achi ng s ys t em [OL].2016 —7 — 1 3/2016 — 7 — 24. ht t ps: // memcached.org. [2]Pr ovosN,Mat he ws onN.1 i bevent[OL].ht t p: //l i bevent .or s /.201 4—01—05.2016—07—24.ht t p: //l i bevent .or / s [3]Jenki nsB.Has hf unct i ons[J].Ver s i on19/02/1 5.ht t ps: //code.go ogl e.com/p/s mha sher /wi ki /Mur mur Has h3. [4]Appl ebyA.mur mur has h3[J].2011. [5]T.Yang,R.Duan,eta1 ..CLUE:Achi evi ngf as tupdat eove rcompr es s edt abl ef orpar al l ell ookupwi t hr educeddynami cr edun— dancy. i n Proc. IEEE ICDCS,2012. [6]YangT,Xi eG,LiY B,eta1 .Guar ant eeTPl o okuppe r f or mancewi t hFI Be xpl os i ng[J].ACM SI GCOMM Comput erCommuni — cat i on Revi e w,2015,44(4):39—50 [7]Yang,Tong,Li u,Al exX,Shahzad,Muhammadeta1 .A s hi f t i ngbl oom f il t e rf r amewor kf ors etquer i es[C]. //Pro co ft het he VLDB Endo wment .New Yor k:ACM ,201 6,9(5):1—13 [ 8]B.H.Bl o o m. S p a c e /t i met r a d e — o f f si nh a s hc o di ngwi t ha l l o wa b l ee r r o r s[ J].Co mmu n i c a t i o nso ft h eACM,1 9 70,1 3(7): 422 — -426 [9]PaghR,Rodl e rFF.Cuckoohashi ng[C] //Eur ope anSympos i um onAl gor i t hms.Spri ngerBer l i nHei del ber g,2001:1 21—1 33 [1 O]蒋 捷 ,杨 仝 ,张 梦 瑜 ,代 亚 非 ,黄 亮 ,郑 廉 清 .DCu c k o o: 基 于 片 内 摘要 的 高性 能 哈希 表 [c]. 第2 2届 全 国 信 息 存 储 技 术 学 术 会 议 .2016. [11]Redi sLa bs.Us i ngRedi sasa nLRU cac he[OL]. 2016—7—24/2016—7—24.ht t p: //r edi s.i o/t opi es /l r u—ca che. [1 2]Co r b a t oFJ .A p a g i nge x p e r i me n twi t ht hemu hi c ss y s t e m[ R].MASS ACHUSET TSI NS T OFTECH CAMBRI DGE PROJ ECT MAC , 1968. [13]Fa nB.Ander senD G,Kami ns kyM.MemC3:Compactandconcur r entmemcachewi t hdumberca chi ngand s mar t erhashi ng [C]//NSDI2013:371. 384 作 者简 介 李 首 扬 ,(1994.4一), 男 ,硕 士研 究 生 , 研究方 向: 分 布式 系统 。 通信作者 : 杨仝 , 北 京 大学 计 算 机 系 , 助理研究员。