NoSQL data store using the SEASTAR framework, compatible with Redis
Switch branches/tags
Nothing to show
Clone or download
Peng Jian
Peng Jian 1) release managed memory under the correct alloctor; 2) moving param…
…eters instead of copying parameters;
Latest commit 8161cf1 Nov 24, 2017
Permalink
Failed to load latest commit information.
conf reuse some subsystem of scylla Sep 1, 2017
debug It's a new start for Pedis which will be constructed based on Scylla. Aug 27, 2017
dist It's a new start for Pedis which will be constructed based on Scylla. Aug 27, 2017
docs It's a new start for Pedis which will be constructed based on Scylla. Aug 27, 2017
exceptions fix bugs of native parser Nov 10, 2017
gms compile it~ Sep 2, 2017
idl compile it~ Sep 2, 2017
io reuse some subsystem of scylla Sep 1, 2017
licenses It's a new start for Pedis which will be constructed based on Scylla. Aug 27, 2017
message compile it~ Sep 2, 2017
seastar @ 18a82e2 to replace seastar with scylla-seastar Jun 13, 2017
store define the build-in column family Nov 17, 2017
structures 1) release managed memory under the correct alloctor; 2) moving param… Nov 24, 2017
tests Revert "It's a new start for PEDIS that it will be constructed based … Aug 27, 2017
utils impl mutation, flush_buffer; flush buffer to disk Nov 13, 2017
.gitmodules to replace seastar with scylla-seastar Jun 13, 2017
Doxyfile It's a new start for Pedis which will be constructed based on Scylla. Aug 27, 2017
IDL.md to resolve the compilation errors Aug 5, 2017
LICENSE.AGPL change the license to AGPL Mar 27, 2017
NOTICE.txt compile it~ Sep 2, 2017
ORIGIN It's a new start for Pedis which will be constructed based on Scylla. Aug 27, 2017
PEDIS-VERSION-GEN compile it~ Sep 2, 2017
README-DPDK.md compile it~ Sep 2, 2017
README-Redis.md Pedis Aug 4, 2016
README-SCYLLA.md add readme file for scylla Aug 27, 2017
README-seastar.md Pedis Aug 4, 2016
README.md master branch is ok :) Nov 9, 2017
cache.cc define the build-in column family Nov 17, 2017
cache.hh 1) release managed memory under the correct alloctor; 2) moving param… Nov 24, 2017
column_family.cc define the build-in column family Nov 17, 2017
column_family.hh define the build-in column family Nov 17, 2017
commit_log.cc define the build-in column family Nov 17, 2017
commit_log.hh define the build-in column family Nov 17, 2017
config.cc compile it~ Sep 2, 2017
config.hh compile it~ Sep 2, 2017
configure.py 1) remove command_code & redis_protocol class; 2) add reply queue per… Nov 22, 2017
db.cc 1) release managed memory under the correct alloctor; 2) moving param… Nov 24, 2017
db.hh 1) release managed memory under the correct alloctor; 2) moving param… Nov 24, 2017
default_partitioner.hh reuse some subsystem of scylla Sep 1, 2017
idl-compiler.py compile it~ Sep 2, 2017
init.cc compile it~ Sep 2, 2017
init.hh compile it~ Sep 2, 2017
install-dependencies.sh update the building instructions Jun 16, 2017
keys.cc update column family Oct 17, 2017
keys.hh 1) release managed memory under the correct alloctor; 2) moving param… Nov 24, 2017
main.cc 1) remove command_code & redis_protocol class; 2) add reply queue per… Nov 22, 2017
memtable.cc define the build-in column family Nov 17, 2017
memtable.hh define the build-in column family Nov 17, 2017
mutation.cc define the build-in column family Nov 17, 2017
mutation.hh define the build-in column family Nov 17, 2017
native_protocol_parser.cc 1) remove command_code & redis_protocol class; 2) add reply queue per… Nov 22, 2017
native_protocol_parser.hh fix native parser Nov 10, 2017
partition.cc define the build-in column family Nov 17, 2017
partition.hh remove lru_cache.hh Nov 17, 2017
protocol_parser.cc native parser Nov 10, 2017
protocol_parser.hh remove debug info Nov 10, 2017
proxy.cc remove the common.hh Sep 11, 2017
proxy.hh sstables Sep 16, 2017
ragel_protocol_parser.rl 1) remove command_code & redis_protocol class; 2) add reply queue per… Nov 22, 2017
redis.cc 1) release managed memory under the correct alloctor; 2) moving param… Nov 24, 2017
redis.hh 1) remove command_code & redis_protocol class; 2) add reply queue per… Nov 22, 2017
redis_command_code.hh native parser Nov 10, 2017
release.cc compile it~ Sep 2, 2017
release.hh compile it~ Sep 2, 2017
reply_builder.cc Revert "It's a new start for PEDIS that it will be constructed based … Aug 27, 2017
reply_builder.hh 1) remove command_code & redis_protocol class; 2) add reply queue per… Nov 22, 2017
reply_wrapper.hh 1) remove command_code & redis_protocol class; 2) add reply queue per… Nov 22, 2017
request_wrapper.cc It's a new start for Pedis which will be constructed based on Scylla. Aug 27, 2017
request_wrapper.hh 1) remove command_code & redis_protocol class; 2) add reply queue per… Nov 22, 2017
result.hh It's a new start for Pedis which will be constructed based on Scylla. Aug 27, 2017
ring.cc compile it~ Sep 2, 2017
ring.hh remove the common.hh Sep 11, 2017
seastarx.hh compile it~ Sep 2, 2017
serializer.hh compile it~ Sep 2, 2017
server.cc 1) release managed memory under the correct alloctor; 2) moving param… Nov 24, 2017
server.hh 1) remove command_code & redis_protocol class; 2) add reply queue per… Nov 22, 2017
service.cc remove the common.hh Sep 11, 2017
service.hh remove the common.hh Sep 11, 2017
token.cc compile it~ Sep 2, 2017
token.hh compile it~ Sep 2, 2017
types.hh define the build-in column family Nov 17, 2017
version.hh compile it~ Sep 2, 2017

README.md

Pedis (Parallel Redis)

What's Pedis?

Pedis is the NoSQL data store using the SEASTAR framework, compatible with REDIS. The name of Pedis is an acronym of Parallel redis, which with high throughput and low latency.

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 by Pedis as follow:

  • KEY: DEL, EXISTS, TTL, PTTL, EXPIRE, PEXPIRE
  • STRING: GET, SET, DECR, INCR, DECRBY, INCRBY, APPEND, STRLEN, MGET, MSET
  • 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
  • SORTED SET: ZADD, ZCARD, ZCOUNT, ZINCRBY, ZRANGE, ZRANK, ZREM, ZREMRANGEBYSCORE, ZREMRANGEBYRANK, ZREVRANGE, ZREVRANGEBYSCORE, ZREVRANK, ZSCORE, ZUNIONSTORE, ZINTERSTORE
  • GEO: GEOADD, GEOPOS, GEOHASH, GEODIST, GEORADIUS, GEORADIUSMEMBER
  • HyperLogLog: PFADD, PFCOUNT, PFMERGE
  • OTHER: ECHO, PING, SELECT

Building Pedis

In fact, the building instructions of Seastar also works for Pedis.

See building instructions for Fedora, CentOS and Ubuntu.

Getting started

./build/release/pedis --c 1 -m 1G

Current Roadmap

We will build the next generation of redis cluster.

Short-term

  • Implement the redis commands.
  • Output the necessary metrics.

Long-term

  • Build the redis cluster, using GOSSIP protocol to broadcast redis node's status.
  • Build the data replication mechanism between redis cluster.
  • Persist the data to disk based on Structured-logs-merged tree.

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