• Stars
    star
    167
  • Rank 226,635 (Top 5 %)
  • Language
    C++
  • License
    BSD 2-Clause "Sim...
  • Created over 11 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

memcached compatible KVS with master/slave replication.

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.
  • C++11 compiler (gcc 4.8.1+ or clang 3.3+).
  • 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).

More Repositories

1

LicenseList

Generate a list of licenses for the Swift Package libraries that your app depends on.
Swift
117
star
2

eslint-config

ESLint rules for Cybozu
JavaScript
94
star
3

introduction-to-kubernetes

サイボウズで行われた Kubernetes 研修の資料
HTML
75
star
4

WebUI

WebUI is a Swift package that provides WKWebView wrapped by SwiftUI.
Swift
55
star
5

neco-containers

Dockerfiles for OSS products used in Neco
Go
44
star
6

assam

Get a credential by AssumeRoleWithSAML for AWS CLI and SDK
Go
35
star
7

bugbounty

脆弱性報奨金制度に関する詳細文書を保管するレポジトリです
31
star
8

AttachmentInput

AttachmentInput is image picker keyboard.
Swift
30
star
9

garoon-google

To synchronize the Garoon schedule to Google Calendar.
Java
29
star
10

nginx-maxconn-module

This module is used to limit the number of simultaneous requests per defined key.
C
26
star
11

oss-policy

A policy document about open source software referenced at Cybozu.
23
star
12

frontend-expert

TypeScript
21
star
13

maneki-troubleshooting

Scenario repository for k8s troubleshooting hands-on held by Maneki
Shell
21
star
14

duck

Builder and dev server for Google Closure Compiler, Library and Templates. An alternative to plovr.
TypeScript
19
star
15

octoken-action

GitHub Action for creating an installation access token for a GitHub App
TypeScript
17
star
16

nginx-uuid4-module

nginx-uuid4-module is a nginx module to generate version-4 UUIDs.
C
17
star
17

libyrmcds

A memcached client library for C/C++. Best suited to yrmcds.
C
17
star
18

spring-data-jdbc-template

Java
15
star
19

php-yrmcds

Yet another memcached / yrmcds client extension for PHP
C
15
star
20

SAMPLE-test-nginx-with-go-and-docker

nginx を Go と Docker でユニットテストするサンプル
Go
13
star
21

frontend-monthly

Astro
12
star
22

protobuf

Normalization and validation system for Protocol Buffers
JavaScript
11
star
23

renovate-config

A shareable Renovate config for Cybozu
9
star
24

license-manager

license-manager is a CLI license management tool for npm dependencies.
TypeScript
9
star
25

neco-ubuntu

Custom Ubuntu image build tools
Python
8
star
26

LicenseChecker

LicenseChecker is a command line tool checking licenses of swift package libraries that your app depends on.
Swift
7
star
27

passh

Parallel SSH for cluster of hosts based on Python3 asyncio.
Python
7
star
28

ExclusivePresentationState

A Swift Package for exclusive control of state for presentation using Property Wrappers.
Swift
6
star
29

ubuntu-base

Minimal container images based on Ubuntu
Dockerfile
5
star
30

oss-policy-en

English tranlation of https://github.com/cybozu/oss-policy
4
star
31

classic-cjk-analysis-plugin

Solr 4.6 で非推奨になったCJK Tokenizerと互換のあるプラグインです
Java
4
star
32

productivity-news

TypeScript
3
star
33

renovate-dry-run-action

Dry run Renovate for GitHub Actions
3
star
34

CachePropertyKit

A Swift Package for easy in-memory caching of properties using Property Wrappers.
Swift
2
star
35

pre-commit-jsonnet

pre-commit hooks for jsonnet
Go
2
star
36

LicenseListPlugin

A Swift Package Plugin for LicenseList
Swift
2
star
37

option

JavaScript
2
star