README.md 3.2 KB
Newer Older
K
KernelMaker 已提交
1
#Pika
B
baotiao 已提交
2

K
KernelMaker 已提交
3
##Introduction [中文] (https://github.com/baotiao/pika/blob/master/README_CN.md)
K
KernelMaker 已提交
4 5 6 7 8 9 10 11 12 13 14

Pika is a persistent huge storage service , compatible  with the vast majority of redis interfaces ([details](https://github.com/baotiao/pika/wiki/pika支持的redis接口及兼容情况)), 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

##Feature

* huge storage capacity
* compatible with redis interface, you can migrate to pika easily
* support master-slave mode (slaveof)
* various [management](https://github.com/baotiao/pika/wiki/pika的一些管理命令方式说明) interfaces

##Install
Z
Zongzhi Chen 已提交
15

16 17 18
1.Install snappy-devel bz2 libzip-dev libsnappy-dev libprotobuf-dev libevent-dev protobuf-compiler libgoogle-glog-dev protobuf-devel libevent-devel bzip2-devel libbz2-dev zlib-devel etc on you compiling host(if alreadly installed, ignore it); using "yum install" on centos system("apt-get install" on ubuntu system) is ok. If on CentOS system, run the following commands:
   
~~~
J
JacketWoo 已提交
19
	 yum install snappy-devel bz2 libzip-dev libsnappy-dev libprotobuf-dev libevent-dev protobuf-compiler libgoogle-glog-dev protobuf-devel libevent-devel bzip2-devel libbz2-dev zlib-devel
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
~~~
2.Install g++(if installed, skip). Similarly, just using "yum install" on the CentOS(apt-get on Ubuntu) is ok:
 
~~~
	yum install gcc-c++
~~~
3.If your gcc's version is below 4.7, then change it to the 4.7 temporary. For CentOS system, run the flowing commands:

~~~  
	a. sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
	b. yum install --nogpgcheck devtoolset-1.1
	c. scl enable devetoolset-1.1 bash
~~~
4.Fetch the source code: 

~~~
	a. git clone git@github.com:baotiao/pika
	b. cd pika
~~~

5.Get the third party dependencies:

~~~ 
	a. git submodule init
	b. git submodule update
~~~
6.Compile: 

~~~
	make __REL=1
~~~
If it comes to some missing libs, install them according to the prompts and retry it.
B
baotiao 已提交
52

K
KernelMaker 已提交
53 54
##Usage

55 56 57 58 59 60
~~~
	./output/bin/pika -c ./conf/pika.conf
~~~
If failed, move pika source/lib/_VERSION/lib/ to the rpath defined in Makefile and relanch. 

~~~
W
wuxiaofei-xy 已提交
61
	cp PIKA_SOURCE/lib/_VERSION/* RPATH
62 63 64 65
~~~
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
B
baotiao 已提交
66

K
KernelMaker 已提交
67 68
##Performance

K
KernelMaker 已提交
69
```
K
KernelMaker 已提交
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
Server Info:
	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
Client Info:
	Same as Server

Test:
	Pika run with 18 worker threads, and we test it using 40 client;
	1. Write Performance:
		Client push data by set, hset, lpush, zadd, sadd, each interface has 10000 key range;
		result: 110000 qps
	2. Read Performance:
		Client pull data by get, hget, lindex, zscore, smembers, 25000000 keys stored in pika and each interface has 5000000 key range
		result: 170000 qps

```		
##Documents

1. [Wiki](https://github.com/baotiao/pika/wiki)

##Contact Us
B
baotiao 已提交
93

K
KernelMaker 已提交
94
songzhao@360.cn