Skip to main content

High-performance distributed key-value cache

Docs PyPI PyPI - Python Version PyPI - Downloads GitCode commit activity license


🔄Latest News

  • [2025/12] MemCache已作为vllm-ascend backend使能大模型推理加速,详情查看vllm-ascend开源社区,使用示例

  • [2025/11] MemCache项目于2025年11月开源,开源社区地址为:https://gitcode.com/Ascend/memcache

🔜 Roadmap

MemCache roadmap和版本分支策略详见: Roadmap

🎉概述

MemCache是针对LLM推理、GR推理场景设计的高性能分布式KVCache存储引擎,其主要特性包括:

  • 基于对象操作的API:支持批量和非批量的put/get/exist/remove操作,支持多层结构的KV Block读写接口。
  • 支持多副本:单个对象支持多副本放置到不同的LocalService,默认是单副本,支持put接口指定副本数量。
  • 高带宽低时延:使用 MemFabric 作为多级内存和异构网络传输的底座,在Ascend硬件上,基于device_rdma(A2)、device_sdma(A3)、host_rdma(A2/A3) 等路径提供OneCopy跨机跨介质数据直接访问能力,满足高带宽,低时延的读写性能述求。在鲲鹏硬件上,支持host_urma(K5)。支持host_shm实现同节点共享内存通信。
  • 支持扩缩容:支持LocalService动态加入和移除
  • HA能力:在K8S集群中,MetaService支持多活能力,支持元数据恢复,提供尽力而为的HA能力。
architecture

🧩核心组件

MemCache包含LocalService和MetaService两大核心组件:

  • MetaService

    • 负责管理整个集群中内存池空间的分配和管理,处理LocalService的加入与退出。
    • MetaService作为独立进程运行,提供两种启动方式:python API启动;二进制启动,详见 安装部署
    • MetaService支持两种部署形态: 1、单点模式:MetaService由单个进程组成,部署方式简单,但存在单点故障的问题。如果MetaService进程崩溃或无法访问,系统将无法继续提供服务,直至重新恢复为止。 2、HA模式:该模式基于K8S的的ClusterIP Service和Lease资源构建,部署较为复杂,该模式会部署多个MetaService进程实例,实现多活高可用。部署详见 MetaService HA
  • LocalService:负责承担如下功能:

    • 客户端:作为客户端,以whl/so形式作为共享库被应用进程加载调用API
    • 内存提供者:负责提供一段连续的内存区域作为内存池空间的一部分,其内存可以被其他LocalService实例基于地址直接访问。

🔥性能表现

MemCache核心能力是提供大容量内存池和高性能的H2D、D2H、D2RH、RH2D数据访问能力,由于MemCache以 MemFabric 作为池化底座,所以支持RH2D、D2RH等OneCopy跨机跨介质数据直接访问能力,下图为RH2D对比其他中转路径的对比示意图。

RH2D

基于OneCopy跨机跨介质数据直接访问的能力,MemCache在A2/A3做了相关性能测试如下: 模拟构造DeepSeek-R1模型KV大小的block,单个block size为:61x128K + 61x16K = 8784KB ≈ 8.57MB,共122个离散地址。

  • 使用2个昇腾A2节点(每节点8张卡)组成双机内存池进行读写测试性能如下:
A2 perf
  • 使用2个昇腾A3节点(每节点8张卡16Die)组成双机内存池进行读写测试性能如下:
A3 perf

🔍目录结构

├── LICENSE                                 # LICENSE
├── .clang-format                           # 格式化配置
├── .gitmodules                             # git配置
├── .gitignore                              # git忽视配置文件
├── CMakeLists.txt                          # 项目的CMakeList
├── doc                                     # 文档目录
├── example                                 # 样例
│  ├── cpp                                  # c++样例
│  └── python                               # python样例
├── script                                  # 构建脚本
│  ├── build_and_pack_run.sh                # 编译+打包脚本
│  ├── build.sh                             # 编译脚本
│  ├── run_ut.sh                            # 编译+运行ut脚本
├── test                                    # test目录
│  ├── python                               # python测试用例
│  ├── k8s_deploy                           # k8s ha样例脚本
│  └── ut                                   # 单元测试用例
├── src                                     # 源码
│  ├── memcache                             # MemCache 源码
├── config                                  # 配置目录
│  ├── mmc-local.conf                       # 本地服务配置文件模板
│  ├── mmc-meta.conf                        # meta服务配置文件模板
├── README.md

🚀快速入门

请访问以下文档获取简易教程。

  • 编译部署:介绍组件编译和安装教程。
  • 配置文件:涉及MetaService、LocalService公共配置
  • 样例执行:介绍如何端到端执行样例代码,包括C++和Python样例。
  • [最佳实践]:推出中...

📑学习教程

  • c++接口:C++接口介绍以及C++接口对应的API列表
  • python接口:python接口介绍以及python接口对应的API列表

📦软件硬件配套说明

  • MemCache软件依赖 MemFabric,相关配套与MemFabric相同

📌FAQ

常见问题请参考:FAQ

📝相关信息

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

memcache_hybrid-1.1.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

memcache_hybrid-1.1.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

memcache_hybrid-1.1.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

memcache_hybrid-1.1.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

memcache_hybrid-1.1.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

memcache_hybrid-1.1.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

memcache_hybrid-1.1.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

memcache_hybrid-1.1.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file memcache_hybrid-1.1.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memcache_hybrid-1.1.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 025fbc072293df1d01eedb6c053cdcc2854d96197d7e1fd840b33de3d9e1d4ae
MD5 aa0c4a99b1f94bcd55e42d905ec17f0a
BLAKE2b-256 a981c7ba2ded6515777a6f4252455438dd10c25bfb739f985cc8ed003377eb2f

See more details on using hashes here.

File details

Details for the file memcache_hybrid-1.1.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for memcache_hybrid-1.1.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ee9390ccd677d5ab0561249f0f8bd0b51880a795cf5a575a9bbd0e2e679c2032
MD5 6c869e8a9b69d077cb8bceacac5b5d73
BLAKE2b-256 e5f99bf63e80f243a2ec59658016e2dadeb8d904dd24afc5e4ae4d27d1634f06

See more details on using hashes here.

File details

Details for the file memcache_hybrid-1.1.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memcache_hybrid-1.1.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 965e1438da0433b65c24149e39ea4de63d8db8a202c899a914bf880e819286c0
MD5 09538bbdd7dac54b057c7beb850a87c6
BLAKE2b-256 7f6106d84c9a1d50fe97a58f253aa1cfcb65e2d7d8d86a3645ebc98dae1306c6

See more details on using hashes here.

File details

Details for the file memcache_hybrid-1.1.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for memcache_hybrid-1.1.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9ebd79daeacc1c0e18ab9e8dbbeb423de4c2bba93a076ca9b777e4442f3e10a7
MD5 6f3891ec4666f32994513c6118fc43c9
BLAKE2b-256 9b74393d465b16b6f19e5322afd4d81836ff31dc5ed48630b6980e2fe4c1344f

See more details on using hashes here.

File details

Details for the file memcache_hybrid-1.1.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memcache_hybrid-1.1.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4402dc9916b6ffe7fbb97d78a02834e132ad0fb8a610c20ade6bf0c2d9c43ee7
MD5 d445d45f5681b5b27b4b46cd2bb9304d
BLAKE2b-256 55dc84fe9274cba518ec2f64020251ee2adf552445f8baa064edce711a3dbca0

See more details on using hashes here.

File details

Details for the file memcache_hybrid-1.1.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for memcache_hybrid-1.1.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 95914b6df5040aa7871e677d4368925592f04acd313cf9ee6ec32f26f5d8ed12
MD5 dc1155cd6dd83aef31477e38970efdc4
BLAKE2b-256 99fbd18b9e30e7172b69cb2f2732314d362d86e0e34a32b8a15d555e47c6c83f

See more details on using hashes here.

File details

Details for the file memcache_hybrid-1.1.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memcache_hybrid-1.1.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d7047929fbcae8d0e3aa000d9b74c200397c1bedea0e8c176d4840e4a0b4c607
MD5 9400528ae4e394211bafd198bd7deaaa
BLAKE2b-256 00f652cb2b561852ce994fe5ec79ccb2abc78c6621198731fc703fc94b7ecb2b

See more details on using hashes here.

File details

Details for the file memcache_hybrid-1.1.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for memcache_hybrid-1.1.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c7cb75b9fc023eb0c70dc148be0fe3f15621585bc66e3af56bd23cd72bc1db34
MD5 0b4cf656ec984755f045e717eac1a5ec
BLAKE2b-256 bfc517ed522843325bf6ac3adc3642f570f98916643e21924c55fccd5d24325e

See more details on using hashes here.

Release history Release notifications | RSS feed

1.2.0

8 files

This release

1.1.5 This release

8 files

1.1.4

8 files

1.1.3

8 files

1.1.2

8 files

1.1.1

8 files

1.1.0

8 files

1.0.4

6 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page