Skip to content

Pika is a Redis-Compatible database developed by Qihoo's infrastructure team.

License

Notifications You must be signed in to change notification settings

hahahashen/pika

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YnbjQf.png

Build Status Downloads

Stargazers Over Time Contributors Over Time
Stargazers over time Contributor over time

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 also use pika together with twemproxy or codis(pika has supported data migration in codis,thanks left2right and fancy-rabbit) for distributed Redis solution

UserList

Qihoo 360game Weibo Garena
Apus Ffan Meituan XES
HX XL GWD DYD
YM XM XL YM
MM VIP LK KS

More

Feature

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

For developer

Releases

The User can download the binary release from releases or compile the source release.

Compile

Supported platforms

  • linux - CentOS

  • linux - Ubuntu

  • macOS

Dependencies

  • gcc g++, C++17 support (version>=7)
  • make
  • cmake (version>=3.18)
  • autoconf
  • tar

Compile

Upgrade your gcc to version at least 7 to get C++17 support.

  1. Get the source code
  git clone https://github.com/OpenAtomFoundation/pika.git
  1. Checkout the latest release version
  a. exec git tag to get the latest release tag
  b. exec git checkout TAG to switch to the latest version
  1. Compile

Please run the script build.sh before you compile this db to check the environment and build this repo. If the gcc version is later than 7, such as CentOS6 or centOS7, you need to upgrade the gcc version first

Do as follows

  a. sudo yum -y install centos-release-scl
  b. sudo yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++
  c. scl enable devtoolset-7 bash

Please run the script build.sh before you compile this db to check the environment and build this repo.

  ./build.sh

The compilation result is in the 'output' directory.

By default the compilation process is in 'release' mode. If you wanna debug this db,you need to compile it in 'debug' mode.

  rm -fr output
  cmake -B output -DCMAKE_BUILD_TYPE=Debug
  cd output && make

Usage

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

Clean compilation

  If wanna clean up the compilation content, you can choose one of the following two methods as your will.
  1. exec `cd output && make clean` clean pika Compile content
  2. exec `rm -fr output` rebuild cmake (for complete recompilation)

Dockerization

Run with docker

docker run -d \
  --restart=always \
  -p 9221:9221 \
  -v <log_dir>:/pika/log \
  -v <db_dir>:/pika/db \
  -v <dump_dir>:/pika/dump \
  -v <dbsync_dir>:/pika/dbsync \
  pikadb/pika:v3.3.6 

redis-cli -p 9221 "info"

Meaning of dirs:

  • log_dir: Directory to store log files of Pika.
  • db_dir: Directory to store the data of Pika.
  • dump_dir: Directory to stored dump files that generated by command "bgsave".
  • dbsync_dir: Pika db sync path.

Build Image

If you want to build the image yourself, we have provided a script build_docker.sh to simplify this process.

The script accepts several optional arguments:

  • -t tag: Specify the Docker tag for the image. By default, the tag is pikadb/pika:<git tag>.
  • -p platform: Specify the platform for the Docker image. By default is current docker's platform. all, linux/amd64, linux/arm, linux/arm64.
  • --proxy: Use a proxy to download packages to speed up the build process. This is particularly useful if you are in China.
  • --help: Display help information.

Here is an example usage of the script:

./build_docker.sh -p linux/amd64 -t private_registry/pika:latest

Performance

More details on Performance.

Observability

  1. Metrics

Documents

  1. doc

Contact Us

QQ group: 294254078

About

Pika is a Redis-Compatible database developed by Qihoo's infrastructure team.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 66.7%
  • Go 19.0%
  • Tcl 8.2%
  • Python 1.6%
  • Shell 1.2%
  • JavaScript 0.8%
  • Other 2.5%