NoSQL data store using the SEASTAR framework, compatible with Redis
C++ Python Ragel in Ruby Host
Latest commit 2e05f07 Jan 13, 2017 fake fix memory leak
Permalink
Failed to load latest commit information.
docs benchmark Sep 13, 2016
seastar @ 1262ce7 submodule seastar Aug 5, 2016
tests add redis-sdk; move gtest to tests/gtest Sep 20, 2016
.gitmodules modify the url of the seastar Jan 11, 2017
README-DPDK.md Pedis Aug 4, 2016
README-Redis.md Pedis Aug 4, 2016
README-seastar.md Pedis Aug 4, 2016
README.md update README.md Jan 12, 2017
base.hh fix memory leak Jan 13, 2017
configure.py implement SET commands: SADD, SCARD, SREM, SISMEMBER, SMEMBERS Jan 8, 2017
db.cc fix memory leak Jan 13, 2017
db.hh implement SMOVE command Jan 10, 2017
dict.cc fix memory leak Jan 13, 2017
dict.hh implement SET commands: SADD, SCARD, SREM, SISMEMBER, SMEMBERS Jan 8, 2017
dict_storage.cc reimplement db Nov 25, 2016
dict_storage.hh move redis_key Jan 10, 2017
iterator.hh modify the copyright Sep 20, 2016
list.cc fix memory leak Jan 13, 2017
list.hh fix memory leak Jan 13, 2017
list_storage.cc reimplement db Nov 25, 2016
list_storage.hh move redis_key Jan 10, 2017
main.cc implement SET commands: SADD, SCARD, SREM, SISMEMBER, SMEMBERS Jan 8, 2017
misc_storage.cc reimplement db Nov 25, 2016
misc_storage.hh move redis_key Jan 10, 2017
redis.cc fix compilation error in the context of gcc-4.9.2 Jan 12, 2017
redis.hh implement SMOVE command Jan 10, 2017
redis_commands.cc implement SMOVE command Jan 10, 2017
redis_commands.hh fix: correct the size of value Jan 8, 2017
redis_protocol.cc reimplement db Nov 25, 2016
redis_protocol.hh reimplement db Nov 25, 2016
redis_protocol_parser.rl adjust the code directory Aug 22, 2016
set_storage.cc implement SET commands: SADD, SCARD, SREM, SISMEMBER, SMEMBERS Jan 8, 2017
set_storage.hh implement SMOVE command Jan 10, 2017
sorted_set.cc reimplement db Nov 25, 2016
sorted_set.hh reimplement db Nov 25, 2016
storage.cc reimplement db Nov 25, 2016
storage.hh reimplement db Nov 25, 2016
system_stats.cc modify the copyright Sep 20, 2016
system_stats.hh modify the copyright Sep 20, 2016

README.md

Pedis (Parallel Redis)

What's Pedis?

NoSQL data store using the SEASTAR framework, compatible with REDIS.

Redis is very popular data structures server. For more infomation, see here: http://redis.io/ Seastar is an advanced, open-source C++ framework for high-performance server applications on modern hardware. For more infomation, see here: http://www.seastar-project.org/

Now, the redis commands were supported as follow:

  • Key: DEL, EXISTS
  • String: GET, SET, DECR, INCR, DECRBY, INCRBY, APPEND, STRLEN
  • List: LINDEX, LINSERT, LLEN, LPUSH, LPUSHX, LPOP, LRANGE, LREM, LTRIM, LSET, RPOP, RPUSH, RPUSHX
  • Hash: HSET, HDEL, HGET, HLEN, HSTRLEN, HMSET, HMGET, HKEYS, HVALS, HEXISTS, HINCRBY
  • SET: SADD, SMEMBERS, SISMEMBER, SREM, SDIFF, SDIFFSTORE, SINTER, SINTERSTORE, SUNION, SUNIONSTORE, SMOVE, SPOP
  • Other: ECHO, PING

Building Pedis on Ubuntu 14.04

In addition to required packages by Seastar, the following packages are required by Pedis.

Installing required packages:

sudo apt-get install libaio-dev ninja-build ragel libhwloc-dev libnuma-dev libpciaccess-dev libcrypto++-dev libboost-all-dev libxen-dev libxml2-dev xfslibs-dev

Installing GCC 4.9 for gnu++1y. Unlike the Fedora case above, this will not harm the existing installation of GCC 4.8, and will install an additional set of compilers, and additional commands named gcc-4.9, g++-4.9, etc., that need to be used explicitly, while the "gcc", "g++", etc., commands continue to point to the 4.8 versions.

# Install add-apt-repository
sudo apt-get install software-properties-common python-software-properties
# Use it to add Ubuntu's testing compiler repository
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
# Install gcc 4.9 and relatives
sudo apt-get install g++-4.9
# Also set up necessary header file links and stuff (?)
sudo apt-get install gcc-4.9-multilib g++-4.9-multilib

To compile Seastar explicitly using gcc 4.9, use:

git clone https://github.com/fastio/pedis.git
cd pedis
git submodule update --init --recursive
./configure.py --compiler=g++-4.9
ninja 

Run Pedis

./build/release/pedis --smp 1

Benchmark

The following describe the details of the Pedis benchmark making it reproducible. The result data was generated by memtier_benchmark(https://github.com/RedisLabs/memtier_benchmark).

Latest Results(Sep. 2016)

Pedis's latency was less then 0.5ms for 99% of all requests.

Test bed:

  • Server 1: Pedis/Redis Server
  • Server 2: memtier_benchmark tool

Software:

  • OS RedHat EL7
  • Pedis (latest)
  • Redis (2.8)

Hardware:

  • Memory: 128GB
  • SSD: 500GB
  • CPU: 24 logical cores
  • NIC: 1000Mb