MCPcopy Create free account
hub / github.com/cybozu/yrmcds

github.com/cybozu/yrmcds @v1.1.13

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.13 ↗ · + Follow
682 symbols 1,722 edges 89 files 157 documented · 23% updated 13mo agov1.1.13 · 2025-06-16★ 1697 open issues

Browse by type

Functions 570 Types & classes 112
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Build Status

yrmcds is a memory object caching system with master/slave replication.

Currently, yrmcds supports two protocols: the first is an enhanced memcached, and another is a protocol to implement distributed resource counters.

Since the memcached protocol is perfectly compatible with the original implementation, yrmcds can be used as a drop-in replacement for memcached. Thanks to its virtual-IP based replication system, existing applications can obtain high-available memcached-compatible service without any modifications.

A companion client library libyrmcds and a PHP extension are also available.

yrmcds was developed originally for kintone.com.

License

yrmcds is licensed under the BSD 2-clause license.

The source code contains a SipHash implementation borrowed from csiphash which is licensed under the MIT license.

Features

  • Complete memcached text and binary protocols with these extensions:
  • Distributed resource counter protocol.
  • Optional memory security to store confidential information like SSL session data.
  • Large objects can be stored in temporary files, not in memory.
  • Virtual-IP based master-slave replication.
    • Automatic fail-over
    • Automatic recovery of redundancy.
  • Global LRU eviction / no slab distribution problem.
    • Unlike memcached, yrmcds is not involved with slabs problems. (1, 2)

A companion client library and a PHP extension are also available.

See also usage guide, future plans, differences from memcached, design notes and some benchmark results.

Prerequisites

  • Linux.
  • GCC or clang with C++17 support.
  • GNU make.

Build

Just run make.

yrmcds runs faster when linked with TCMalloc. On Debian/Ubuntu, install libgoogle-perftools-dev package to prepare TCMalloc.

The makefile automatically detects TCMalloc if available.

Install

On Ubuntu, sudo make install installs yrmcds under /usr/local. What make install does are:

  • Install yrmcdsd under /usr/local/sbin.
  • Install service start script for systemd or upstart.
  • Install logrotate script.
  • Create /etc/yrmcds.conf.

About the name

The name yrmcds was taken from "Ymmt's Replicating MemCacheD for Sessions".
As it reads, yrmcds was developed mainly for session storage.

The correct pronunciation sounds like: "Yo-Ru-Mac-Do" (夜マクド in Japanese).

Core symbols most depended-on inside this repo

Shape

Method 474
Class 100
Function 96
Enum 12

Languages

C++100%

Modules by API surface

test/protocol_binary.cpp55 symbols
src/memcache/memcache.hpp52 symbols
src/memcache/memcache.cpp32 symbols
cybozu/hash_map.hpp32 symbols
src/config.hpp26 symbols
test/counter_client.hpp25 symbols
cybozu/reactor.hpp23 symbols
cybozu/tcp.hpp21 symbols
src/memcache/object.hpp19 symbols
cybozu/logger.hpp18 symbols
cybozu/ip_address.cpp18 symbols
cybozu/dynbuf.hpp18 symbols

For agents

$ claude mcp add yrmcds \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page