File: README.md

package info (click to toggle)
yrmcds 1.1.8-1.1
  • links: PTS
  • area: main
  • in suites: buster, sid
  • size: 1,000 kB
  • sloc: cpp: 11,157; sh: 148; makefile: 117
file content (99 lines) | stat: -rw-r--r-- 3,430 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
[![Build Status](https://travis-ci.org/cybozu/yrmcds.png)](https://travis-ci.org/cybozu/yrmcds)

**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](docs/counter.md).

Since the memcached protocol is perfectly compatible with the
[original implementation][memcached], 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][php-yrmcds]
are also available.

yrmcds was developed originally for [kintone.com][kintone].

License
-------

yrmcds is licensed under [the BSD 2-clause license][bsd2].

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

Features
--------

* Complete memcached text and binary protocols with these extensions:
    * [Server-side locking](docs/locking.md)
    * [Dump keys](docs/keys.md)
* [Distributed resource counter](docs/counter.md) protocol.
* [Optional memory security](docs/usage.md#secure_erase) 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][slab1], [2][slab2])

A [companion client library][libyrmcds] and a [PHP extension][php-yrmcds]
are also available.

See also [usage guide](docs/usage.md), [future plans](docs/future.md),
[differences from memcached](docs/diffs.md), [design notes](docs/design.md)
and some [benchmark results](docs/bench.md).

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](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).


[memcached]: http://memcached.org/
[bsd2]: http://opensource.org/licenses/BSD-2-Clause
[SipHash]: https://131002.net/siphash/
[csiphash]: https://github.com/majek/csiphash
[mit]: http://opensource.org/licenses/MIT
[libyrmcds]: http://cybozu.github.io/libyrmcds/
[php-yrmcds]: http://cybozu.github.io/php-yrmcds/
[slab1]: http://nosql.mypopescu.com/post/13506116892/memcached-internals-memory-allocation-eviction
[slab2]: https://groups.google.com/forum/#!topic/memcached/DuJNy5gbQ0o
[kintone]: https://www.kintone.com/
[tcmalloc]: http://goog-perftools.sourceforge.net/doc/tcmalloc.html