pika:适用于大数据量持久化的类redis组件|简介及安装(一)

发布于:2024-12-09 ⋅ 阅读:(199) ⋅ 点赞:(0)

0. 引言

最近因为公司中用到pika组件,于是将研究过程和理解进行系统记录,以供后续参考。

1. pika简介

pika是360开发的一款国产类redis的非关系型数据库,主要用来解决redis在大内存下产生的启动恢复时间长、一主多从代价大、缓存区容易写满等问题。适用于大数据量下的数据查询,比如日志、汇总数据、各种全量数据等。

需要注意的是pika是类redis的,也就意味着它兼容redis的大部分指令和客户端

其支持的客户端可以在github源码库中查看到,以java为例,比较常用的redis客户端jedis,redission都支持pika
源码库地址:https://github.com/OpenAtomFoundation/pika/wiki/%E6%94%AF%E6%8C%81%E7%9A%84%E8%AF%AD%E8%A8%80%E5%92%8C%E5%AE%A2%E6%88%B7%E7%AB%AF

这就意味着,对于pika的客户端对接和使用,可以直接参考redis

在这里插入图片描述
pika和redis一样,同样支持5种数据类型string、hash、list、set、zset。针对各数据结构的指令支持情况可见下图
在这里插入图片描述
更多可见官方对pika 支持的redis接口及兼容情况的描述
https://github.com/OpenAtomFoundation/pika/wiki/pika-%E6%94%AF%E6%8C%81%E7%9A%84redis%E6%8E%A5%E5%8F%A3%E5%8F%8A%E5%85%BC%E5%AE%B9%E6%83%85%E5%86%B5

pika特性

  • 协议兼容:完全兼容 Redis 协议,且极力追求高性能、大容量、低成本、大规模
  • 数据结构:支持 Redis 的常用数据结构 String、Hash、List、Zset、Set、Geo、Hyperloglog、Pubsub、Bitmap、Stream、ACL etc
  • 冷热数据:对热数据做缓存,将全量数据持久化存储到 RocksDB,并且实现冷热分级存储
  • 极大容量:相比于 Redis 的内存存储方式,Pika 支持百 GB 的数据量级,能极大减少服务器资源占用,增强数据的可靠性
  • 部署方式:单机主从模式(slaveof)和 Codis 集群模式,扩缩容简单
  • 迁移简单:不用修改代码即可平滑从 Redis 迁移到 Pika
  • 便于运维:完善的运维命令文档

2. pika安装

下面我们针对pika单机版的安装来进行详细叙述

1、下载安装包,这里我选择了3.5.3版本,tar.gz压缩版中只有一个pika执行文件,缺少配置文件和工具包,所以选择bz2版更加方便
下载地址

在这里插入图片描述

2、解压bz2格式的需要提前安装一个bzip2工具

yum install -y bzip2

3、创建个路径用来安装pika, 然后解压安装包

mkdir /data/pika
tar -xvf pika-linux-x86_64-v3.5.3.tar.bz2

解压后可以看到有一个output路径
在这里插入图片描述

4、我们修改一下配置文件中的配置项

thread-num : 4 # 调整为cpu核数值
thread-pool-size : 12 # 一般该值为thread-num的1.5倍,这里我没有调整,直接使用的默认值

log-path : /data/pika/output/log/ # 日志文件路径,指定为绝对路径,防止因执行路径不同导致的文件变化
db-path : /data/pika/output/db/  # 数据文件路径,指定为绝对路径,防止因执行路径不同导致的文件变化


pika中的各配置项,可以参加官方说明
https://github.com/OpenAtomFoundation/pika/wiki/pika-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E

在这里插入图片描述

同时pika的相关参数调优可以参考https://github.com/OpenAtomFoundation/pika/discussions/1970?sort=old

在这里插入图片描述

5、可以通过如下指令手动启动pika

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

可以用各类redis客户端对pika进行连接测试
在这里插入图片描述

至此,pika就安装成功了,但在服务器中运行时,为了防止断电、重启等导致的宕机,我们还要设置pika的开机自启

3. pika设置开机自启

1、创建pika.service文件

vi /usr/lib/systemd/system/pika.service

并编辑内容

[Unit]
Description=pika server
Requires=network.target
After=network.target

[Service]
Type=forking
WorkingDirectory=/data/pika/output
ExecStart=/data/pika/output/bin/pika -c /data/pika/output/conf/pika.conf
Restart=always

[Install]
WantedBy=multi-user.target

2、创建pika.service.d目录

mkdir /etc/systemd/system/pika.service.d

创建limit.conf文件

cat > /etc/systemd/system/pika.service.d/limit.conf <<EOF
# If you need to change max open file limit
# for example, when you change maxclient in configuration
# you can change the LimitNOFILE value below
# see "man systemd.exec" for information
  
[Service]
LimitNOFILE=65536
EOF

3、最后因为要后台启动pika, 我们还需要修改pika中的配置项

vi /data/pika/output/conf/pika.conf

daemonize设置为yes,即让pika允许后台启动
在这里插入图片描述
4、接下来就可以通过systemctl指令启动、停止pika服务了

# 停止
systemctl stop pika
# 启动
systemctl start pika
# 重启
systemctl restart pika
# 检查启动状态
systemctl status pika

5、添加到开机自启

systemctl enable pika

6、如果启动过程有问题,可以查看output/log下的日志文件进行排查

总结

至此pika安装就完成了,下节我们来看看如何在java项目中集成pika


网站公告

今日签到

点亮在社区的每一天
去签到