README_CN.md 5.3 KB
Newer Older
K
KernelMaker 已提交
1
# Pika
S
SongZhao 已提交
2
## 简介 [English](https://github.com/Qihoo360/pika/blob/master/README.md)
S
SongZhao 已提交
3
Pika是一个可持久化的大容量redis存储服务,兼容string、hash、list、zset、set的绝大接口([兼容详情](https://github.com/Qihoo360/pika/wiki/pika-支持的redis接口及兼容情况)),解决redis由于存储数据量巨大而导致内存不够用的容量瓶颈,并且可以像redis一样,通过slaveof命令进行主从备份,支持全同步和部分同步,pika还可以用在twemproxy或者codis中来实现静态数据分片(不支持codis的slot migrate)
K
KernelMaker 已提交
4

S
SongZhao 已提交
5 6 7 8 9 10 11 12 13
##Pika用户

<img src="http://i.imgur.com/dcHpCm4.png" height = "100" width = "120" alt="Qihoo">
<img src="http://i.imgur.com/jjZczkN.png" height = "100" width = "120" alt="Weibo">
<img src="http://i.imgur.com/zoel46r.gif" height = "100" width = "120" alt="Garena">
<img src="http://i.imgur.com/kHqACbn.png" height = "100" width = "120" alt="Apus">
<img src="http://i.imgur.com/2c57z8U.png" height = "100" width = "120" alt="Ffan">

<img src="http://i.imgur.com/rUiO5VU.png" height = "100" width = "120" alt="Meituan">
S
SongZhao 已提交
14
<img src="http://i.imgur.com/px5mEuW.png" height = "100" width = "120" alt="XES">
S
SongZhao 已提交
15 16
<img src="http://imgur.com/yJe4FP8.png" height = "100" width = "120" alt="HX">

S
SongZhao 已提交
17 18 19

[更多](https://github.com/Qihoo360/pika/blob/master/USERS.md)

K
KernelMaker 已提交
20 21 22 23
## 特点
* 容量大,支持百G数据量的存储
* 兼容redis,不用修改代码即可平滑从redis迁移到pika
* 支持主从(slaveof)
S
SongZhao 已提交
24
* 完善的[运维](https://github.com/Qihoo360/pika/wiki/pika的一些管理命令方式说明)命令
K
KernelMaker 已提交
25

B
baotiao 已提交
26 27 28 29 30 31 32 33 34 35 36 37 38 39

## 快速试用
  如果想快速试用pika,目前提供了Centos5,Centos6的binary版本,可以在[release页面](https://github.com/Qihoo360/pika/releases)看到,具体文件是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
```

K
KernelMaker 已提交
40
## 编译安装
W
wuxiaofei-xy 已提交
41 42 43 44

1.在编译机上安装snappy-devel bz2 libzip-dev libsnappy-dev libprotobuf-dev libevent-dev protobuf-compiler libgoogle-glog-dev protobuf-devel libevent-devel bzip2-devel l ibbz2-dev zlib-devel等。CentOS系统可以用yum安装,Ubuntu可以用apt-get安装。如是CentOS系统,执行如下命令:

```
J
JacketWoo 已提交
45
    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
W
wuxiaofei-xy 已提交
46 47 48 49
```

2.安装g++(若没有安装), 在CentOS上执行如下命令:

K
KernelMaker 已提交
50
```
W
wuxiaofei-xy 已提交
51
    yum install gcc-c++
K
KernelMaker 已提交
52 53
```

W
wuxiaofei-xy 已提交
54 55 56 57 58
3.把gcc版本临时切换到4.7(若已是,则忽略), 在CentOs上执行如下命令:

```
	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
J
JacketWoo 已提交
59
	c. scl enable devtoolset-1.1 bash
W
wuxiaofei-xy 已提交
60 61 62 63
```
4.获取源代码

```
S
SongZhao 已提交
64
	git clone https://github.com/Qihoo360/pika.git && cd pika
W
wuxiaofei-xy 已提交
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
```
5.获取依赖的第三方源代码

```
	a. git submodule init
	b. git submodule update
```

6.编译

```
	make __REL=1
```
若编译过程中,提示有依赖的库没有安装,则有提示安装后再重新编译

K
KernelMaker 已提交
80 81
## 使用
```
J
JacketWoo 已提交
82
	./output/bin/pika -c ./conf/pika.conf
K
KernelMaker 已提交
83
```
W
wuxiaofei-xy 已提交
84 85 86 87 88 89 90 91
若启动失败,把./lib/_VERSION/的内容拷贝到Makefile定义的rpath目录下,然后重新启动

```
	cp PIKA_SOURCE/lib/_VERSION/* RPATH
```
PIKA_SOURCE表示的pika的源代码根目录;
_VERSION表示的是编译机的CenOS版本,如6.2, 5.4...
RPATH在Makefile定义,表示的是程序运行的库预先加载路径
K
KernelMaker 已提交
92

Z
zhaoanan 已提交
93

K
KernelMaker 已提交
94
## 性能
S
SongZhao 已提交
95 96

###测试环境:
K
KernelMaker 已提交
97
```
S
SongZhao 已提交
98
	相同配置服务端、客户机各一台:
K
KernelMaker 已提交
99 100 101 102 103
	处理器:24核 Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz
	内存:165157944 kB
	操作系统:CentOS release 6.2 (Final)
	网卡:Intel Corporation I350 Gigabit Network Connection
```
S
SongZhao 已提交
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
###测试接口:
```
	Set、Get
```

###测试方法:
```
	pika配16个worker,客户机执行 ./redis-benchmark -h ... -p ... -n 1000000000 -t set,get -r 10000000000 -c 120 -d 200
	通过set和get接口对pika进行10亿次写入+10亿次读取
```

###测试结果:
```
    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
```

###与SSDB性能对比([详情](https://github.com/Qihoo360/pika/wiki/pika-vs-ssdb))
<img src="http://imgur.com/rGMZmpD.png" height = "400" width = "480" alt="1">
<img src="http://imgur.com/gnwMDof.png" height = "400" width = "480" alt="10">
S
SongZhao 已提交
155

S
SongZhao 已提交
156 157 158
###与Redis性能对比
<img src="http://imgur.com/k99VyFN.png" height = "400" width = "600" alt="2">

K
KernelMaker 已提交
159
## 文档
S
SongZhao 已提交
160
1. [Wiki] (https://github.com/Qihoo360/pika/wiki)
K
KernelMaker 已提交
161 162

## 联系方式
S
SongZhao 已提交
163 164 165
邮箱:songzhao@360.cn

QQ群:294254078