暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Pika的API和高可运维总结

数据库和存储 2021-04-16
1980

这是一篇晚上下班,回家路上的15min短文。

本文主要从功能方面整理下Pika目前的API;同时,系统的可运维性也是一个特别重要的指标,因此我们总结下Pika在高可运维方面的一些特性;

1 API 支持100+命令

  • 支持5大类型接口:String、Hash、List、ZSet、Set, 接口相当丰富; 

    • 支持bitset;

  • 支持多个管理命令,可运维性高;

  • DEL可以秒删、支持所有类型

  • 过期功能支持所有类型(TTL)

  • Scan接口支持所有数据类型;

  • ZSet的score支持一定范围的浮点数;

命令列表图例:

  • √ : 表示该接口完全支持,使用方式与redis没有任何区别;

  • !: 表示功能支持,但使用或输出与redis有部分差异,需注意;

  • × : 暂不支持;

1.1 String类型35个接口

Cmdsetgetdelscanexists
状态
Cmdexpireexpireatpersistttlappend
状态
Cmdmgetmsetmsetnxdecrdecrby
状态
Cmdgetrangegetsetincrincrbyincrbyfloat
状态
Cmdsetexsetnxsetrangestrlenpexpire
状态!
Cmdpexpireatpttltypekeysbitcount
状态!!
Cmdbitopgetbitsetbitbitposscan
状态!!!!!

Cmdrenamerenamenxpsetexdumpmigrate
状态×××××
Cmdmoveobjectrandomkeyrestoresort
状态×××××

1.2 Hash类型完全支持15个接口

Cmdhsethgethdelhsetnxhmget
状态
Cmdhmsethincrbyhincrbyfloathexistshgetall
状态
Cmdhlenhkeyshvalshscanhstrlen
状态

1.3 List类型支持13个接口

Cmdlindexlinsertllenlpoplpush
状态
Cmdlpushxlrangelremlsetltrim
状态
Cmdrpoprpoplpushrpush

状态

1.4 Set支持全部15个接口

Cmdsaddscardsdiffsdiffstoresinter
状态
Cmdsinterstoresismembersmemberssmovespop
状态
Cmdsrandmembersremsunionsunionstoresscan
状态
  • spop:spop的随机实际上为伪随机,实现方式为从头部抽取100个元素然后从其中抽取一个进行返回,在pika中不建议使用spop实现真正需要随机返回的需求

  • srandmember:时间复杂度O(n),耗时较多

1.5 ZSet支持全部20个接口

Cmdzaddzcardzcountzincrbyzrange
状态
Cmdzrangebyscorezrankzremzremrangebyrankzremrangebyscore
状态
Cmdzrevrangezrevrangebyscorezrevrankzscorezunionstore
状态!
Cmdzinterstorezscanzrangebylexzlexcountzremrangebylex
状态
  • zscore:目前支持的数据范围是[-10^13, 10^13]。精度支持10e-5(小数点后5位),小于Redis的数据范围

2 完善的主从复制

  • 通过全同步+增量同步实现 

    • BGSave基本秒级导出数据,通过rsync实现快速全同步

    • 增量同步功能是通过Binlog模块实现;

3 高可运维

Cmdinfoconfigclientpingbgsave
状态
Cmdshutdownselectmonitor

状态!

3.1 高效备份BGSave:

  • 更可控:BGSave BGSaveoff

  • 性能很好(数据基本秒级备份);

  • 备份过程中,IO消耗较低,不需要额外空间;

3.2 权限管理:

  • 主从或者单机支持: 

    • requirepass、userpass;

    • 命令黑名单;

3.3 可配置程度高:

  • 配置文件可配,大部分配置项支持config命令动态配置

  • 配置项包括: 

    • server运行基本配置:目录、线程、端口等;

    • 客户端相关配置;

    • BinLog配置;

    • 引擎相关配置:memory、cache、compact线程;

3.4 易于监控

  • info信息丰富: 

    • clients状态;

    • QPS

    • 当前引擎内存使用;

    • 主从状态;

    • BinLog状态及配置;

    • 统计信息包括: 

    • db size、keyspace及状态;

3.5 Binlog套件,易于管理、备份及恢复数据

  • binlog_sync工具: 

    • 稳定、实时备份binlog

  • binlog_sender恢复工具: 

    • 基于log文件恢复数据;

    • 基于时间区间恢复数据;

  • binlog_parser解析工具: 

    • 方便查看log;

    • 根据时间过滤log;

3.6 数据迁移工具:

  • aof_to_pika: 支持通过Redis aof导入pika;

  • ssdb_to_pika: 支持ssdb导入pika;

  • pika_to_redis: 支持pika导入redis

4 其他

  • 客户端直接使用Redis客户端;

  • github有编译安装、设计实现相关的wiki;

  • 我们也提供了编译好的binary,方便大家试用;

联系我们


文章转载自数据库和存储,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论