-
为RTC功能添加开关,如果Get/HGet在RTC路径上就未命中缓存,后面流转到正常路径上时直接读DB,不再读cache#2841@cheniujh
-
添加定时删除日志的任务,默认 7 天删除一次,可以根据自己需求在 config 文件中进行配置#2829@XiaoLiang2333
-
flushall 命令写 flushdb 为 binlog,如果是多 DB 状态,每个 DB 分别写一条,保证从节点消费的顺序 #2846@cheniujh
-
incr、append 命令在传输 binlog 时,使用 pksetexat 命令,防止因为不正确的操作导致数据无法过期,出现脏数据#2833@chejinge
-
添加更多的 RocksDB 指标,配置中增加 open_rocksdb_statistics_tickers 字段,默认为no。开启会损耗+1.5%#2658@baixin01
-
修复执行 zremrangebyrank 命令出现异常错误信号,导致 Pika 进程崩溃的问题#2891@chejinge
-
修复 Rpushx 命令执行时未更新 RedisCache 的问题,避免出现 DB、缓存不一致的问题#2879@hahahashen
-
修复 blpop/brpop 更新数据库的时候未更新缓存可能回导致 RocksDB 数据库与 RedisCache 缓存不一致的现象#2858@cheniujh
-
用 Rocky 环境替代 CentOS, github CI 流程总体支持 MacOS/Ubuntu/Rocky 三个环境#2823@QlQlqiqi
-
解决 Pika slave_prorority 赋值不准确导致从节点无法升主,不能使用 Redis-Sentinel 的问题#2813@chejinge
-
优化主从复制,确保 Master 端的 SlaveNode 在提交 bgsave 任务前进入 DBSync 状态,防止bgsave执行时的 binlog 在极端情况下被清除#2798@cheniujh
-
修改主从复制过程中 flushdb binlog 的处理逻辑,确保按照顺序执行,避免出现主从不一致的情况#2794@cheniujh
-
修复 BlockCache 计算不准确的问题#2797@bigdaronlee163
-
添加标志位、时间戳和返回值机制,确保 Pika 在执行 flushdb 且处理异步删除旧目录时冲突时正确处理#2790@cheniujh
-
修复集群模式主备自动容灾过程中,老主节点降备过程中,因为 sent_offset 和 acked_offset 不相等,导致状态 Error 的情况#2789@luky116
-
PkpatternMatchDel 在删除数据库的同时删除 RedisCache,保证数据的一致性#2777@haiyang426
-
修复 Sentinel 主从切换时,由于主节点和从节点数据量不一致导致主从切换状态扭转错误问题#2766@cheniujh
-
incr、append 命令在传输 binlog 时,使用 pksetexat 命令,防止因为不正确的操作导致数据无法过期,出现脏数据#2833@chejinge
-
添加定时删除日志的任务,默认 7 天删除一次,可以根据自己需求在 config 文件中进行配置#2829@XiaoLiang2333
-
优化主从复制,确保 Master 端的 SlaveNode 在提交 bgsave 任务前进入 DBSync 状态,防止bgsave执行时的 binlog 在极端情况下被清除#2798@cheniujh
-
更新 Pika Docker Readme, 可以按照 Readme 在 Docker 中部署 Pika 服务#2743@luky116
-
支持对更多的 RocksDB 参数进行动态调整,用户根据不同的业务使用场景调整参数提升 Pika 的读写性能#2728@cheniujh
-
重构主从复制模式 slave 节点的主从同步线程模型,尽可能减少 binlog 消费阻塞问题#2638@cheniujh
-
增加主从复制状态指标 repl_connect_status,方便运维人员清晰明确的判断当前的主从复制状态#2656@cheniujh
-
新增 RocksDB Compaction 策略动态调整参数,用户可以根据业务调整 Compaction 策略,降低 Compaction 操作对服务性能的损耗#2538@wangshao1
-
修改 Pika 自动化测试客户端链接 server 端的超时时间,避免因为长时间断开导致测试失败#2863@cheniujh
-
修复
blpop/brpop
更新数据库的时候未更新缓存可能回导致 RocksDB 数据库与 RedisCache 缓存不一致的现象#2858@cheniujh -
PkPatternMatchDel
命令在删除 DB 的同时删除 RedisCache,避免出现 RocksDB 数据库与 RedisCache 缓存数据不一致的情况#2839@chejinge -
用 Rocky 环境替代 CentOS, github CI 流程总体支持 MacOS/Ubuntu/Rocky 三个环境#2823@QlQlqiqi
-
修改 slave_priority 的默认值,防止因为运维同学没有设置该值,导致主从切换失败#2813@chejinge
-
修复 Pika block-cache 信息计算不准确,内存使用计算不标准的问题#2797@bigdaronlee163
-
修改主从复制过程中 flushdb binlog 的处理逻辑,确保按照顺序执行,避免出现主从不一致的情况#2794@cheniujh
-
添加标志位、时间戳和返回值机制,确保 Pika 在执行 flushdb 且处理异步删除旧目录时冲突时正确处理#2790@cheniujh
-
修改主从复制过程中 flushdb binlog 的处理逻辑,确保按照顺序执行,避免出现主从不一致的情况#2790@cheniujh
-
修复
PKPatternMatchDel
命令未删除迭代器可能会导致 RocksDB 删除数据不彻底的问题#2786@wangshao1 -
修复 sentinel 主从切换时,由于主节点和从节点数据量不一致导致主从切换状态扭转错误问题#2766@cheniujh
-
修复
Pksetat
命令更新 DB 的同时未更新 RedisCache 缓存,可能会存在 RocksDB 数据库与 RedisCache 缓存不一致的问题#2759@chejinge -
修复 Pika-port 传输数据过程中报错的问题#2758@guangkun123
-
Pksetexat 更新数据库的同时更新 RedisCache,避免出现RocksDB 数据库与 RedisCache 缓存不一致的问题#2736@longfar-ncy
-
修复 RedisCache 层因为没有使用 storage 层解析的 ttl 可能会导致 RocksDB 数据库与 RedisCache 缓存不一致的问题#2729@chejinge
-
修复 Stream 类型数据不能被 RocksDB compaction 会导致过期数据一直存在的问题#2724@wangshao1
-
修复 Pika cmdID 赋值在 Cmd 初始函数中,可能会导致并发构造的时候出现内存泄漏的问题#2692@gukj-spel
-
Mget 支持多 key 查询缓存, 记录未命中的 key 去 DB 中查询,提升 Pika 服务的读性能#2675@chejinge
-
Codis 支持 info 命令, 可以通过该命令查询 Codis-proxy 的 info 信息#2688@chienguo
-
Pika 主从复制新增监控指标 repl_connect_status, 可以更加明确清晰的确定当前的主从复制的状态#2638@cheniujh
-
Pika 支持第三代存储引擎 Floyd, 通过支持多 rocksdb 实例、对 Blob 的使用进行优化、对过期数据的清理进行优化,提升了 Pika 实例的读写性能#2413@wangshao1
-
更新 Pika Docker Readme, 可以按照 Readme 在 Docker 中部署 Pika 服务#2743@luky116
-
支持对更多的 RocksDB 参数进行动态调整,用户根据不同的业务使用场景调整参数提升 Pika 的读写性能#2728@cheniujh
-
对 HyperLogLog 和 String 进行类型隔离,确保 HyperLogLog 操作与 String 操作明确区分开#2720@saz97
-
重构主从复制模式 slave 节点的主从同步线程模型,尽可能减少 binlog 消费阻塞问题#2638@cheniujh
-
新增 RocksDB Compaction 策略动态调整参数,用户可以根据业务调整 Compaction 策略,降低 Compaction 操作对服务性能的损耗#2538@MalikHou
-
修复 iter 未被析构,导致 pkpatternmatchdel 在返回之前不会删除 iter,这可能会导致 rocksdb 永远引用一个版本,导致数据不符合预期的问题#2785@wangshao1
-
修复 Pika-port 传输数据过程中报错的问题#2758@guangkun123
-
修复批量扩容时,多个 slave 同时连接 master, 短时间多次 bgsave 导致部分从节点数据不完整的问题#2746@cheniujh
-
修复 Slotmigrate 迁移数据的过程中,返回值设置错误,异常场景下会终止数据迁移的问题#2741@chejinge
-
修复 Mget 没有使用解析 ttl 的函数导致出现部分key的ttl未被更新,数据不一致的问题#2730@chejinge
-
修复 pkpatternmatchdel 命令使用错误导致的 stream 类型数据删除异常的问题#2726@wangshao1
-
修复 Pika cmdID 赋值在 Cmd 初始函数中,可能会导致并发构造的时候出现内存泄漏的问题#2692@gukj-spel
-
修复 ExpectedStale 未考虑 String 类型, 如果存在已经过期的 String 类型的 key, ExpectedStale 会返回错误的问题#2682@wangshao1
-
Pika 支持动态调整全量同步限速参数 rsync-timeout-ms 和 throttle-bytes-per-second#2633@cheniujh
-
将 info key space 1 的结果输出至 info all 并展示到监控界面中#2603@XiaoLiang2333
-
Pika 磁盘IO 限速参数支持 OnlyRead、OnlyWrite、ReadAndWrite,默认支持OnlyWrite#2599@vacheli
-
修复
Pika Expoter
启动时不带参数导致启动失败问题#2640@Polaris3003 -
修复当 max-rsync-parallel-num 大于4,slave 会在主从复制时 coredump 的问题#2595@chejinge
-
修复因修改 zsetscorekeycomparatorimpl 字典序比较熟顺序,导致353 352极端场景不兼容的问题#2583 @wangshao1
-
修复 Flushall 和 FlushDB 死锁的隐患,并删除 FlushSubDB 接口#2533@Mixficsol
-
删除 Sharing 模式残留的 Slot,Pika 下只有 DB,一个 Pika 下有多个 DB#2251 @Mixficsol
-
Pika exporter 暴露 cache 相关的数据采集指标#2318 @dingxiaoshuai
-
Pika 支持快慢命令分离#2162 @dingxiaoshuai
-
升级 RocksDB 版本到 v8.7.3#2157@JasirVoriya
-
Pika 分布式集群 Codis proxy 新增可观测指标#2199@dingxiaoshuai
-
Pika 支持动态调整 max-conn-rbuf-size 参数#2434 @HappyUncle
-
Pika-operator 支持 namespace,可以在不同的 namespace 下部署不同的集群#2480 @Y-Rookie
-
ACL 向前兼容 userblacklist#2459 @dingxiaoshuai
-
在 Pika 执行 shutdown 命令时调用 disable compaction, 提升进程退出速度 #2345 @panlei-coder
-
修复 Compact ,Bgsave ,Info keyspace 命令未指定db名称,导致部分命令 coredump 的问题#2194@u6th9d
-
Codis dashboard 用 info replication 替代 info 命令查寻 master ip 降低对 Pika 的性能影响 #2198 @chenbt-hz
-
修复 Pika cache 使用边缘case,解决部分场景下 cache 和 DB 数据不一致的问题#2225 @chejinge
-
修复当 dump 文件夹为空时,会启动报错 Segmentation fault 的问题#2265 @chenbt-hz
-
修复部分命令未对 RocksDB 的返回值进行判断的问题#2187@callme-taota
-
修复从库在 Apply binlog 时,没有对操作的 key 加锁,导致数据不一致的问题#2409 @chejinge
-
Codis-Proxy 支持动态修改配置参数 #2103 @dingxiaoshuai123
-
补全 Go Test 测试用例 #2063@dingxiaoshuai123
-
修复因删除 Clearreplicationid 写进 binlog 导致的全量复制问题 #2136 @Mixficsol
-
修复 decr 命令返回值错误问题 #2092 @dingxiaoshuai123
-
flush 线程数和 compaction 线程数动态调整,合二为一 #2014 @Tianpingan
-
升级了 RocksDB 版本到 v8.3.3 #1999 @dingxiaoshuai123
-
新增周期性打印工作队列的长度功能,在队列阻塞的时候可以快速定位问题 #1978 @Tianpingan
-
实现在 K8s 环境上 Pika 服务的自动注册,在启动时自动注册,从而实现集群的自组织 #1931 @machinly
-
使用 make -j 提高构建速度 #1933 @xiezheng-XD
-
修复了 Macos 环境下编译使用 tools 导致编译不过的问题 #2011 @A2ureStone
-
在 v3.5.0 版本我们去除了 Rsync,使用自研的全量同步方案替代 Rsync,这个版本的全量同步有断点续传,速率限制,文件检验等特点
- 去除 Rsync
- 实现断点续传,速率限制,文件检验
- Pika 主从同步时,进行 master run_id 的检验
-
在 v3.5.0 版本我们兼容并支持了更多的 Redis 命令
- 支持 UNLINK 命令
- 支持 INFO COMMANDSTATS 命令
- 支持 HELLO、SETNAME 命令
- 支持 BLPOP、BRPOP 命令
- 新增 Pika 原创命令 DISKRECOVERY
- 升级 RocksDB 版本到 v8.1.1
- 实现 RocksDB 分级压缩
- 新增 RocksDB 缓存配置项 num-shard-bits 能够从配置文件中读取
- 支持 BlobDB KV 分离
- 引入 Codis 到 Pika
- 引入 Codis 的 CI
- 支持 Codis 迁移 slot 命令
- 新增是否在 reload 的 slotmigrate 状态
-
在 v3.5.0 版本我们新加了 pika_exporter 工具来监测 Pika 的可观测性指标,并在后期添加了一些新的指标来完善 Pika 的可观测性
- 新增 Pika 可观测系统 pika_exporter
- 新增网络 I/O 流量监控指标
- 新增命令统计耗时指标
- 新增 estimate_pending_compaction_bytes 度量来分析碎片率指标
- 新增 RocksDB 指标
- 实现 Pika 单例服务在 K8s 上快速部署
- 实现了在 MiniKube 环境中部署 Pika
- 给 pika-operator 添加 E2E 测试
-
在 v3.5.0 版本,Pika 支持 MacOS 平台,CentOS 平台,Ubuntu 平台进行编译使用
- 支持 MacOS 平台
-
在 v3.5.0 版本我们支持了 Ubuntu,CentOS,MacOS 下的 CI,在测试方面新加了 Go 的集成测试,TCL 单元测试,Python 的 E2E 测试
#1534 #1772 #1769 #1347 #1268 #1693 #1362 #1538 #1246 #1357 #1534 #1772
@machinly @wanghenshui @chenbt-hz @Tangruilin @kernelai @Mixficsol
- 新增 CentOS 环境下的 CI
- 新增 MacOS 环境下的 CI
- 新增 E2E 测试框架
- 新增在 Github CI Workflow 中添加 CMake 编译环境
- 新增在 TCL 脚本中 populate 方法模拟 Redis debug populate 方法,用以填充测试数据
- 新增单测启动脚本
- 新增在 blackwidow 中添加 cmake 文件,添加对 blackwidow 的单元测试
- 使用 CTest 进行单元测试
- 移植 Redis 测试脚本
- 在 CI 流程中添加新的任务,以验证 Pika 是否能在 CentOS 系统上成功编译
- 新增对 compact 进行自动限速,降低 compact 对上层数据读写延迟造成影响 #1374 @wanghenshui
- 新增 aof_to_pika 工具集 #1340 @Axlgrep
- 新增 Pika 的打印 Logo #1787 @Mixficsol
- 新增使用 clang-tidy 优化了部分代码 #1701 #1730 @longfar-ncy
- 新增将 C++98 风格的代码统一更换成 C++11 风格,使用 C++ 编码规范编程 #1684 @chejinge
- 新增 snappy 库 #1216 @kernelai
- 新增 CLA 文件 #1260 @kernelai
- 新增内存相关的配置支持 K|M|G 单位 #1307 @lqxhub
- 新增添加 libunwind 依赖库 #1316 @kernelai
- 新增编译 Pika 脚本 #1356 @lqxhub
- 新增 pika.conf 中添加 "rate-limiter-bandwidth" 选项 #1272 @wanghenshui
- 新增 INFO 命令添加 redis_version 信息 #1403 @wanghenshui
- 新增对 aof_to_pika 的 CMake 支持 #1436 @A2ureStone
- 新增 clang 格式的 shell 脚本 #1448 @lqxhub
- 新增配置项禁用编译 command docs #1642 @tedli
- 新增 benchmark_client, binlog_sender,manifest_generator,rdb_to_pika,txt_to_pika,pika_to_txt,pika_port 的 CMake 支持 #1451 @A2ureStone
- Pika 模式统一去除 sharding 模式 #1481 @chejinge
- 在 config 中添加槽位号 #1664 @luky116
- 统一 partition 命名为 slot #1571 #1655 @chejinge
- 用 Monitor 命令替换 Monitor 线程 #1551 @loveyacper
- 增加了启动服务器时对空密码和错误密码的 requipass 判断 #1645 @hqh-cell
- 重构 pstd_mutex #1440 @4kangjc
- 修改命令信息键空间响应数据 #1450 @lqxhub
- 合并 pstd 和 storage 的相同代码 #1419 @4kangjc
- 按计数添加 spop #1434 @ChanphongGu
- 添加 Pika docker 镜像说明 #1557 @machinly
- 用 RocksDB GetFileSystem 接口替换旧有的 GetEnv 接口 #1213 @kernelai
- 新增散落在外的 Pika 文档 #1193 @fengpeiyuan
- CMake 升级到 3.18 #1366 @AlexStocks
- 给 Pika 添加 format 工具 #1512 @liuqian1990
- 为 Pika 添加 clang-tidy #1515 #1730 @ForestLH @longfar-ncy
- 在 MiniKube 中把 Pika 和 pika-operator 运行起来 #1330 @machinly
- 给 clang-format 添加谷歌编码风格 #1479 @Mixficsol
- 使用 std::filesystem 重构 pstd / env #1470 @4kangjc
- pstd::GetFixed 添加 Slice #1425 @4kangjc
- 在头文件中使用内联变量 #1407 @4kangjc
- 使用 clang-format 对代码进行格式化 #1378 @AlexStocks
- 移动 pika-operator 到 pika-tools 目录 #1468 @luky116
- 给 Pika 添加 Codis -> Pika 迁移工具 #1514 @chenbt-hz
- 修复不同 CPU 指令集不兼容导致 coredump #1812 @chejinge
- 修复 Monitor 命令异常退出问题 #1804 @Mixficsol
- 修复不完整的配置覆盖 #1800 @yaoyinnan
- 修复 MacOS 环境下的 CTest 测试 #1789 #1721 #1782 @tedli @Mixficsol
- 修复进程启动时从配置文件加载 master-run-id 失败,导致从节点需要重新同步历史数据 #1778 @luky116
- 修复 Pika 单测时 overrides 选项格式出错 #1768 @A2ureStone
- 修复通过配置指定获取 INFO xxx (INFO data, INFO stats) 的索引,而不是使用INFO ALL #1762 @yaoyinnan
- 修复 instantaneous_metric 并每5秒收集一次网络指标 #1757 @yaoyinnan
- 修复完善 config get 返回的参数 #1593 @luky116
- 修复 slot 可能为空的问题 #1712 @Mixficsol
- 修复中 makefile 中对版本选择执行的一些 bug #1714 @luky116
- 修复 HSET 第一次不能成功执行的问题 #1710 @Mixficsol
- 修复 slave 节点的 binlog offset 比 master 节点大,导致 TrySync 失败 #1681 @luky116
- 修复了一个 NOAUTH 错误的测试,该错误是任意命令,当需要 AUTH 时给出错误 #1680 @hqh-cell
- 修复了 binlog 文件超出上限不会自动清理问题 #1679 @luky116
- 修复 LPUSHX 和 RPUSHX 多元素插入的问题 #1525 @ForestLH
- 修复 BGSAVE 命令执行报错问题 #1523 @Brokenice0415
- 修复关闭 RocksDB 使用 io_uring, 防止在链接时报错 #1489 @lqxhub
- 修复 MacOS 环境下 Pika 编译警告问题 #1740 @Mixficsol
- 修复不支持的命令报错消息,适配 go-redis #1244 @wgqi1126
- 修复一个 protobuf3 的编译告警 #1267 @wanghenshui
- 修复 sharding 模式下 EXISTS 和 DEL 两个命令的 bug #1277 @wanghenshui
- 修复 rsync auth bug #1278 @wanghenshui
- 修复按照 Redis 标准修复 rewrite 返回结果形式 #1339 @lqxhub
- 修复修改 SET NX/XX 返回值,与 Redis 保持一致 #1343 @gtygo
- 修复 exporter 中缺失 pika_master_link_status 和 pika_slave_priority indicators 两张图 #1726 @Mixficsol
- 修复防止当 Pika 使用的文件描述符超过 ulimit 限制时程序 coredump #1346 @kernelai
- 修复在类中初始化群成员的值以防止 redis-cli 与 Pika 的链接被意外关闭 #1390 @AlexStocks
- 修复 delete_dir snprintf bug #1400 @wanghenshui
- 修复限制 thread num #1401 @wanghenshui
- 修复 redis-benchmark 从 Pika 获取 config #1402 @wanghenshui
- 修复初始化类成员 #1406 @AlexStocks
- 修复 MacOS 环境下主从同步测试的问题 #1776 @Mixficsol
- 修复 NULL 为 nullptr #1408 @AlexStocks
- 修复 ttl 的 size 边界设置过期时间戳 #1413 @ForestLH
- 修复访问空指针 #1414 #1426 @fly1ngpengu1ns @Pikachu1412
- 修复 Monitor 命令 #1424 @loveyacper
- 修复 partitionInfo::operator 回布尔值 #1427 @4kangjc
- 修复访问 src/net 中的空指针问题 #1453 @gitveg
- 修复 aof_reader c++17 构建失败 #1454 @lqxhub
- 修复编译警告 #1455 @wangchuande
- 修复 operator 构建偶尔失败的问题 #1464 @machinly
- 修复 CondVar 无法退出的问题 #1475 @lqxhub
- 修复 libfmt 调试构建名称错误 #1476 @lqxhub
- 修复 Monitor 命令异常退出问题 #1804 @Mixficsol
- 修复 slave 节点 binlog offset 异常问题 #1681 @luky116
- 修复单元测试 no auth 报错问题 #1680 @hqh-cell
- 修复 binlog 文件超过上限不会被删除的问题 #1679 @luky116
- 修复 string 相关单元测试 #1675 @Mixficsol
- 修复 Codis 异常退出时 tmp 文件没有删除的问题 #1661 @yaoyinnan
- 修复主从复制数据不一致的问题 #1638 @cheniujh
- 修复 INFO 命令 Metrics 指标获取失败的问题 #1646 @chejinge
- 修复单侧 basic 类型错误的问题 #1625 @chenbt-hz
- 修复 LPOP, RPOP 接口提示参数不对的问题 #1520 @luky116
- 修复实例硬盘容量满清理数据后,Pika 仍然保持错误的状态,需要重启才能恢复的问题 #1765 #1822 #1843 @Yangsx-1 @Mixficsol
- 删除 3.4 引入的 Proxy #1274 @wanghenshui
- 删除 submodule #1312 @wanghenshui
- 删除 sharding 命令 #1469 @chejinge
- 删除 tcmalloc #1472 @Mixficsol
- 对 leader 添加 protect 模式 #1276 @wanghenshui
- 把 Codis 最新代码同步到 Pika 仓库中 #1279 @WyattJia
- 在 CMake 文件中添加外部依赖库 #1281 @kernelai
- 在 CMake 文件中添加外部依赖库列表 #1285 @kernelai
- 将 Pika 制作了一个静态链接库,可以直接和依赖库链接构成 Pika 的二进制包 #1310 @Tangruilin
- protbuf 生成不依赖本机环境,加多核编译,修复 debian 下连接缺少 pthread 的报错 #1314 @lqxhub
- 把 slash 重命名为 pstd #1348 @AlexStocks
- 把目录 src/pink 重命名为 src/net #1350 @AlexStocks
- 把单词 bw 和 blackwidow 重命名为 storage #1352 #1353 @AlexStocks
- 更新编译器要求文档 #1420 @4kangjc
- 替换无效链接 #1430 #1441 #1471 @gitveg @1321034767 @chiehwarm
- 将 /tools/codis2pika/test 中的 Redis 从 4.3.3 升级到 4.4.4 #1536 @dependabot
- 将 golang.org/x/sys 从 /tools/codis2pika 中的 0.0.0-20210927094055-39ccf1dd6fa6 提升到 0.1.0 #1535 @dependabot
- 用智能指针替换 new/delete #1503 #1502 #1493 @cheniujh @A2ureStone @iiiuwioajdks
- 用 glog 替换 fprintf #1421 @Mixficsol