All Projects → roma → Roma

roma / Roma

Licence: gpl-3.0
ROMA: A Distributed Key-Value Store in Ruby

Programming Languages

ruby
36898 projects - #4 most used programming language

Labels

Projects that are alternatives of or similar to Roma

magento-cluster
Highly Available and Auto-scalable Magento Cluster
Stars: ✭ 21 (-93.4%)
Mutual labels:  memcached
anchor
High-Performance Erlang Memcached Client
Stars: ✭ 15 (-95.28%)
Mutual labels:  memcached
Senparc.co2net
支持 .NET Framework & .NET Core 的公共基础扩展库
Stars: ✭ 289 (-9.12%)
Mutual labels:  memcached
BuildPhp
php and web env manager for mac,include apache nginx php mysql memcached redis node with mutable version, and SSL make, file info... extend tools
Stars: ✭ 111 (-65.09%)
Mutual labels:  memcached
cache-trace
A collection of Twitter's anonymized production cache traces.
Stars: ✭ 89 (-72.01%)
Mutual labels:  memcached
Bashcached
memcached server built on bash + socat
Stars: ✭ 270 (-15.09%)
Mutual labels:  memcached
shell-scripts
my-scripts
Stars: ✭ 87 (-72.64%)
Mutual labels:  memcached
Cache
Cache library
Stars: ✭ 310 (-2.52%)
Mutual labels:  memcached
b52
b52 is a fast experimental Key/value database. With support for the memcache protocol.
Stars: ✭ 20 (-93.71%)
Mutual labels:  memcached
Zhong
Reliable, distributed cron.
Stars: ✭ 281 (-11.64%)
Mutual labels:  memcached
memcached
Memcached Operator for Kubernetes
Stars: ✭ 18 (-94.34%)
Mutual labels:  memcached
ddos
Simple dos attack utility
Stars: ✭ 36 (-88.68%)
Mutual labels:  memcached
Arcus
ARCUS is the NAVER memcached with lists, sets, maps and b+trees. http://naver.github.io/arcus
Stars: ✭ 273 (-14.15%)
Mutual labels:  memcached
bmemcached-rs
Rust binary memcached implementation
Stars: ✭ 24 (-92.45%)
Mutual labels:  memcached
Neard
🎲 Portable WAMP software stack
Stars: ✭ 296 (-6.92%)
Mutual labels:  memcached
php-mvc
PHP MVC ⦿ Dockerized • Composer • RESTful API • Memcached • cron • WebSocket
Stars: ✭ 17 (-94.65%)
Mutual labels:  memcached
Ultramemcache
Ultra fast memcache client written in highly optimized C++ with Python bindings.
Stars: ✭ 262 (-17.61%)
Mutual labels:  memcached
Gokv
Simple key-value store abstraction and implementations for Go (Redis, Consul, etcd, bbolt, BadgerDB, LevelDB, Memcached, DynamoDB, S3, PostgreSQL, MongoDB, CockroachDB and many more)
Stars: ✭ 314 (-1.26%)
Mutual labels:  memcached
Quack
Quack Toolkit is a set of tools to provide denial of service attacks. Quack Toolkit includes SMS attack tool, HTTP attack tool and many other attack tools.
Stars: ✭ 305 (-4.09%)
Mutual labels:  memcached
Scrapbook
PHP cache library, with adapters for e.g. Memcached, Redis, Couchbase, APC(u), SQL and additional capabilities (e.g. transactions, stampede protection) built on top.
Stars: ✭ 279 (-12.26%)
Mutual labels:  memcached

ROMA - A Distributed Key-Value Store in Ruby

Gitter Build Status Test Coverage Code Climate Issue Count

ROMA is one of the data storing systems for distributed key-value stores.
It is a completely decentralized distributed system that consists of multiple processes, called nodes, on several machines. It is based on pure P2P architecture
like a distributed hash table, thus it provides high availability and scalability.

ROMA is written in Ruby. However, following choices are available to access to ROMA.

  • Client libraries of Ruby and Java are available.
  • ROMA protocol is compatible with memcached text-based one so that
    any memcached client libraries allows users to interact with ROMA.

More information is here.

Documentation

Requirements

  • Ruby >= 2.1.0

Installation

Install ROMA

You can simply install ROMA and dependency libralies by using a gem command of Ruby as follows.

$ gem install roma

Make routing files

ROMA is required to make the routing files before starting up.
The routing file is stored the routing information of each processes.

$ mkroute localhost_10001 localhost_10002 --replication_in_host

If succeeded, two new files which named localhost_10001.route and localhost_10002.route created in the current directory.
Refer to Commands for more detail information about Shell Commands.

Start up ROMA

Run two processes by using a romad.rb program as follows:

$ romad localhost -p 10001 -d --replication_in_host
$ romad localhost -p 10002 -d --replication_in_host

Refer to Shell Commands for more detail information about Shell Commands.

Usage

Like memcached, you can connect to ROMA with telnet. Connect to the ROMA process that you ran above.

$ telnet localhost 10001

You can interact with ROMA in the same way of memcached commands.

set foo 0 0 3 <return>
bar <return>
STORED
get foo <return>
VALUE foo 0 3
bar
END

Refer to Commands for more detail information about ROMA Commands.

Contributing

If you would like to contribute, please...

  1. Fork and git clone it.
  2. Install gems required for development.
  3. Make changes in a branch & add unit tests.
  4. Run Unit Test
  • bundle exec rake (if unit test fails, run it again - it's fickle).
  • Specify STORAGE to test test cases related to storages such as groonga, sqlite3 and dbm.
  1. Create a pull request.

Contributions, improvements, comments and suggestions are welcome!

Promoters

Roma is promoted by Rakuten, Inc. and Rakuten Institute of Technology.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].