Skip to main content


High-performance distributed key-value cache

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


🔄Latest News

  • [2026/06] MemCache使能推理PrefixCache加速案例实践,请关注wiki主页案例库获取最新案例

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

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

🔜 Roadmap&发布策略

MemCache roadmap详见:Roadmap MemCache 分支发布策略:分支发布策略

🎉概述

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

  • 基于对象操作的API:支持批量和非批量的put/get/exist/remove操作,支持多层结构的KV Block读写接口。
  • 多层缓存池:支持HBM,DDR,SSD组成多级缓存池,多级之间通过淘汰和预取进行数据冷热交换。
  • 高带宽低时延:使用 MemFabric 作为多级内存和异构网络传输的底座,在Ascend硬件上,基于device_rdma(A2)、device_sdma(A3)、host_rdma(A2/A3)、device_urma(A5)、device_uboe(A5) 等路径提供OneCopy跨机跨介质数据直接访问能力,满足高带宽,低时延的读写性能诉求。在鲲鹏硬件上,支持host_urma(K5)。支持host_shm实现同节点共享内存通信。
  • 支持扩缩容:支持LocalService动态加入和移除
  • HA能力:在K8S集群中,MetaService支持多活能力,支持元数据恢复,提供尽力而为的HA能力。
architecture

🧩核心组件

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

  • MetaService:

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

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

📁项目结构导览

MemCache 核心代码按模块化设计原则组织,核心实现位于 src/memcache/csrc 下。

src/memcache/csrc/                        # C++ 核心实现
  ├── meta_service/                       # MetaService:集群元数据管理、空间分配、淘汰
  │    ├── mmc_meta_service.cpp           # MetaService 主服务逻辑
  │    ├── mmc_meta_manager.cpp           # 元数据管理器(key→blob 全局映射)
  │    ├── mmc_blob_allocator.cpp         # 内存池空间分配器
  │    ├── mmc_meta_container_lru.cpp     # LRU 元数据容器(冷热追踪/淘汰)
  │    └── mmc_meta_net_server.cpp        # RPC 网络服务端
  ├── client/                             # 本地客户端:被推理进程以 whl/so 形式加载
  │    ├── mmc_client_default.cpp         # 客户端核心实现(batch put/get/copy)
  │    ├── mmc_meta_net_client.cpp        # RPC 网络客户端
  ├── local_service/                      # LocalService:内存提供者
  │    ├── mmc_local_service_default.cpp  # LocalService 主实现
  │    └── mmc_bm_proxy.cpp               # MemFabric BM 语义代理
  └── under_api/                          # 底座接入层(MemFabric / UBSIO)
       ├── mf_smem/                       # MemFabric 动态库接入(HBM / DRAM 层)
       │    └── smem_bm_api.cpp           # 批量内存拷贝 API
       └── ubs_io/                        # UBSIO 动态库接入(SSD 层)
            ├── mmc_ubs_io_proxy.cpp      # UBSIO 代理封装
            └── dl_ubsio_api.cpp          # UBSIO 动态加载

🔥性能表现

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

🚀快速入门

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

📑学习教程

  • C++接口:C++接口介绍以及C++接口对应的API列表
  • Python接口:Python接口介绍以及Python接口对应的API列表
  • RESTful接口:指标监控接口介绍以及API列表

📦软件硬件配套说明

  • MemCache软件依赖 MemFabric,相关配套与MemFabric相同。 详见:完整软件硬件配套文档,涵盖支持的操作系统、Ascend/鲲鹏硬件型号、CANN版本、MemFabric底座版本、内存大页规格等完整配套信息。

📌FAQ

常见问题请参考:FAQ

📝相关信息

说明

此开源项目非华为产品,仅提供有限支持。

Metadata

Release files for memcache-hybrid 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for memcache-hybrid 1.3.0
File
memcache_hybrid-1.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
memcache_hybrid-1.3.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
memcache_hybrid-1.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
memcache_hybrid-1.3.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
memcache_hybrid-1.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
memcache_hybrid-1.3.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
memcache_hybrid-1.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
memcache_hybrid-1.3.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details

Total release size: 104.1 MB

Release files / memcache_hybrid-1.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL memcache_hybrid-1.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 13.6 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
abb9f6dfbcdb1d0cfca1e71b6ba6fbd86c2ccd4826c676b94bd8f636089bb472
BLAKE2b-256 checksum
How to use checksums
fa6ed99194a5713c3dc7071e161b9747d529dbac08200d0bc9a2a6e0601d6360
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.14

Release files / memcache_hybrid-1.3.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL memcache_hybrid-1.3.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 12.4 MB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c9f82ca0f7a40403736493b16c6d58c0d77c354f28cfc545503a8fdbeeb469d3
BLAKE2b-256 checksum
How to use checksums
6551e6c02bc94c0b3cc8132f17fdd25168aa094c6ef88c1705805491126e1f80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.14

Release files / memcache_hybrid-1.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL memcache_hybrid-1.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 13.6 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d2d8d92573b9f7c85529baae1c615783966c7f90918fe3ccdd94723276c08efb
BLAKE2b-256 checksum
How to use checksums
b05a78c19425992ddec75a19fdc1caf8feaa826385af91264c780292d35a585d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.14

Release files / memcache_hybrid-1.3.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL memcache_hybrid-1.3.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 12.4 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8700d5be63b97236d92e78455655172d0b5a5fb76817b8c5ec850ee858a365fa
BLAKE2b-256 checksum
How to use checksums
4c01436351910ecf88ced500104b5bf4b3a0972688433207d1b03e5b947b9138
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.14

Release files / memcache_hybrid-1.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL memcache_hybrid-1.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 13.6 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c7e27fa154ed3423d0d99b29fccac8d598198082ca80a834a2ee6918d35cf77d
BLAKE2b-256 checksum
How to use checksums
b68397654b12aca0ecd78c607763cb1d9bb955702afa07adc2fe1b109975c388
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.14

Release files / memcache_hybrid-1.3.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL memcache_hybrid-1.3.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 12.4 MB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f128381a4c30f714e3dc1f82efe46ef60a75b81cf8dcc9a0c211f60902ffd0b9
BLAKE2b-256 checksum
How to use checksums
873378b6e143f818dd3cbe1191c9451f575e20426f2b823aa01387621397f55b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.14

Release files / memcache_hybrid-1.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL memcache_hybrid-1.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 13.6 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
88e5c6a4975fa7b6c5b37e12036df7cf3e9560a3b74835601fcc43d8bd06799e
BLAKE2b-256 checksum
How to use checksums
012bc99e437cd364848e6b27baa078d1da15c01efec48f494ac18a81af9ed0ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.14

Release files / memcache_hybrid-1.3.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL memcache_hybrid-1.3.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 12.4 MB
Tags CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3a0c434bd3921ec46f27719e45dd29b27922cb2edb34fd9c544ce7f980f367e1
BLAKE2b-256 checksum
How to use checksums
891b1f9d5b1eca52be39374524cd8b3983896038eaf63cb8eca3f44efb8983e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.14

Security for memcache-hybrid 1.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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