Pika搭建以及使用 - Wangxiaoman/tech-note GitHub Wiki

Pika用途

基于磁盘的KV存储引擎,具体使用方式和Redis类似,可以使用Redis的protocol来连接

Pika原理

基于RocksDB存储引擎,LSM Tree,写友好,写入性能可以媲美Redis,读性能略逊

  • 使用redis protocol,这意味着可以直接使用redis client
  • 命令通过redis protocol协议处理之后传输到ProcessLayer
  • 将命令写入binlog文件
  • 数据写入Blackwidow storage中
  • Blackwidow 是对rocksdb的封装,以支持list、set、zset、map的数据存储结构(几种数据结构的实现方式),因为都是利用kv存储的变种来实现的复合结构,所以在性能上一定有损失,需要根据实际情况来使用

Pika安装

安装包安装

  1. snappy安装(http://pkgs.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.1.tar.gz)
 $ sudo ./configure
 $ sudo make
 $ sudo make install
  1. glog安装(https://github.com/google/glog)

  2. Pika安装,下载release,解压之后启动

使用docker-compose部署

docker-compose.yml配置

version: '3.1'
services:
   pika:
     container_name: pika
     image: pikadb/pika
     restart: always
     ports:
       - 9221:9221
     volumes:
       - ./data/logs:/pika/log

启动命令 docker-compose up -d

Pika的访问

基本命令

基本和redis的简单命令基本一致,对于有一些命令不兼容,详情见pika的官网wiki

  1. 通过telnet直接连接
#telnet localhost 7203
 
Trying 192.168.1.1...
Connected to localhost.
Escape character is '^]'.
 
get 1
$1
1
set a a
+OK
get a
$1
a
  1. redis 客户端来访问(redis-cli -h localhost -p 7203)

  2. python调用(https://github.com/andymccurdy/redis-py)

pip install redis
# or
python setup.py install
>>> import redis
>>> r = redis.Redis(host='192.168.1.107', port=7203, db=0)
>>> r.set('c','c')
True
>>> r.get('c')
b'c'
>>> r.get('d')
>>> r.set('a','c,d,d,e,e,f')
True
>>> r.get('a')
b'c,d,d,e,e,f'
  1. java 访问 直接使用jedis、lettuce即可,springboot中直接使用spring-boot-starter-data-redis,默认会引入redis的client