GithubHelp home page GithubHelp logo

hetianzhuo / pika Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openatomfoundation/pika

0.0 2.0 0.0 82.56 MB

Pika is a nosql compatible with redis, it is developed by Qihoo's DBA and infrastructure team

License: Other

Makefile 1.03% Shell 0.25% C++ 97.99% C 0.72%

pika's Introduction

Pika

Build Status

Introduction中文

Pika is a persistent huge storage service , compatible with the vast majority of redis interfaces (details), including string, hash, list, zset, set and management interfaces. With the huge amount of data stored, redis may suffer for a capacity bottleneck, and pika was born for solving it. Except huge storage capacity, pika also support master-slave mode by slaveof command, including full and partial synchronization. You can alse use pika in twemproxy or codis(pika has supported data migration in codis,thanks left2right) for distributed Redis solution

UserList

Qihoo 360game Weibo Garena
Apus Ffan Meituan XES
HX XL GWD DYD
YM XM XL LB

More

Feature

  • huge storage capacity
  • compatible with redis interface, you can migrate to pika easily
  • support master-slave mode (slaveof)
  • various management interfaces

Quickstart and Try

You can try to use our pre-build binary versions. For now, only Centos5 and Centos6 are supported. The binary ones can be found at the release page which are called pikaX.Y.Z_centosK_bin.tar.gz.

# 1. unzip file
tar zxf pikaX.Y.Z_centosK_bin.tar.gz
# 2. change working directory to output
#   note: we should in this directory, caz the RPATH is ./lib;
cd output
# 3. run pika:
./bin/pika -c conf/pika.conf

For developer

RoadMap

  • optimize engine nemo to improve list performance

Dependencies

  • snappy - a library for fast data compression
  • zlib - a library for fast data compression
  • bzips - a library for fast data compression
  • protobuf - google protobuf library
  • glog - google log library

Upgrade your gcc to version at least 4.8 to get C++11 support.

Supported platforms

  • linux - Centos 5&6

  • linux - Ubuntu

If it comes to some missing libs, install them according to the prompts and retry it.

Compile

Upgrade your gcc to version at least 4.8 to get C++11 support.

Get source code recursive, then pika will pull all submodules

git clone --recursive https://github.com/baotiao/pika.git

Then compile pika

make __REL=1

Usage

./output/bin/pika -c ./conf/pika.conf

If failed, move pika source/lib/_VERSION/lib/ to the rpath defined in Makefile and relanch.

cp PIKA_SOURCE/lib/_VERSION/* RPATH

The PIKA_SOURCE stands for pika source code's root directory;
The __VERSION represents the OS's version, such as 6.2, 5.4...
The RPATH is defined in pika's Makefile

Performance

test environment

2 same hardware server, one for running pika, the other for running redis-benchmark

CPU: 24 Cores, Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz
MEM: 165157944 kB
OS: CentOS release 6.2 (Final)
NETWORK CARD: Intel Corporation I350 Gigabit Network Connection

test interfaces

Set, Get

test method

run pika with 16 work threads, run redis-benchmark on another server as follow: 
./redis-benchmark -h ... -p ... -n 1000000000 -t set,get -r 10000000000 -c 120 -d 200
execute 1 billion Set and 1 billion Get commands altogether

test result

Set
1000000000 requests completed in 11890.80 seconds
18.09% <= 1 milliseconds
93.32% <= 2 milliseconds
99.71% <= 3 milliseconds
99.86% <= 4 milliseconds
99.92% <= 5 milliseconds
99.94% <= 6 milliseconds
99.96% <= 7 milliseconds
99.97% <= 8 milliseconds
99.97% <= 9 milliseconds
99.98% <= 10 milliseconds
99.98% <= 11 milliseconds
99.99% <= 12 milliseconds
...
100.00% <= 19 milliseconds
...
100.00% <= 137 milliseconds

84098.66 requests per second
Get
1000000000 requests completed in 9063.05 seconds
84.97% <= 1 milliseconds
99.76% <= 2 milliseconds
99.99% <= 3 milliseconds
100.00% <= 4 milliseconds
...
100.00% <= 33 milliseconds

110338.10 requests per second

pika vs ssdb (Detail)

1

10

pika vs redis

2

Documents

  1. Wiki

Contact Us

Mail: [email protected]

QQ group: 294254078 For more information about Pika, Atlas and some other technology please pay attention to our Hulk platform official account

2

pika's People

Contributors

kernelmaker avatar flabby avatar catkang avatar baotiao avatar jacketwoo avatar wenduo avatar leviathan1995 avatar prcyangli avatar jackdrogon avatar lonre avatar gitter-badger avatar songbingyu avatar xwuming avatar left2right avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.