Skip to content

Latest commit

 

History

History
793 lines (460 loc) · 75.4 KB

CHANGELOG.MD

File metadata and controls

793 lines (460 loc) · 75.4 KB

V4.0.1

New Features

  • Added a switch for the RTC function. If Get/HGet misses the cache on the RTC path, when it moves to the normal path, it directly reads from the DB without reading from the cache #2841 @cheniujh

  • Optimized the Pika access cache with the RTC model to improve read performance of the Pika service #2837 @cheniujh

  • Added a scheduled task for log deletion, set to delete logs every 7 days by default. This can be configured in the config file based on your needs #2829 @XiaoLiang2333

Improvement

  • Added a data cleaning function to facilitate users in cleaning data during upgrades #2888 @QlQlqiqi

  • Changed the value in Floyd’s stored data field to milliseconds to be compatible with Redis commands #2857 @luky116

  • The flushall command now writes flushdb to the binlog. If in multi-DB mode, a separate log is written for each DB to ensure correct consumption order by replica nodes #2846 @cheniujh

  • Removed unnecessary logs to avoid excessive disk usage, which could impact data read/write operations #2840 @chejinge

  • The incr and append commands use pksetexat when transferring binlog to prevent incorrect operations that could cause data expiration issues, leading to dirty data #2833 @chejinge

  • Modified the Pika replica node binlog consumption thread model to ensure the consumption order of binlog #2708 @cheniujh

  • Added more RocksDB metrics by introducing the open_rocksdb_statistics_tickers field in the configuration. By default, it's set to no, but turning it on will incur an additional 1.5% performance cost #2658 @baixin01

Bugfix

  • Fixed inaccurate cache data usage by Pika, which caused incorrect monitoring results #2899 @chejinge

  • Fixed the issue where an exception error signal from the zremrangebyrank command could cause Pika to crash #2891 @chejinge

  • Fixed the issue where the Rpushx command did not update RedisCache, leading to DB and cache inconsistency #2879 @hahahashen

  • Fixed the incorrect connection termination process in the kill client command #2862 @cheniujh

  • Fixed the issue where blpop/brpop did not update the cache when updating the DB, potentially causing inconsistency between RocksDB and RedisCache #2858 @cheniujh

  • Fixed the issue where Pika did not support Redis-Sentinel #2854 @cheniujh

  • Fixed inconsistent results when executing the hincrby command multiple times #2836 @luky116

  • Replaced CentOS with Rocky as the default environment for GitHub CI. The process now supports MacOS/Ubuntu/Rocky #2823 @QlQlqiqi

  • Modified the client watch mechanism, where keys will become invalid if modified by anyone (including the client itself) #2815 @luky116

  • Resolved inaccurate slave_priority assignment in Pika, which could cause the replica node to fail to promote to master, preventing the use of Redis-Sentinel #2813 @chejinge

  • Transaction commands now update both DB and RedisCache to avoid inconsistencies between the two #2812 @luky116

  • Optimized master-slave replication to ensure that the SlaveNode on the master enters DBSync state before submitting the bgsave task, preventing binlog deletion during extreme cases while bgsave is being executed #2798 @cheniujh

  • Modified the binlog handling logic during master-slave replication to ensure sequential execution and prevent inconsistencies between master and replica #2794 @cheniujh

  • Fixed inaccurate BlockCache calculations #2797 @bigdaronlee163

  • Added flag bits, timestamps, and return value mechanisms to ensure Pika correctly handles conflicts when executing flushdb while processing asynchronous deletion of old directories #2790 @cheniujh

  • Fixed the issue where inconsistent data amounts between master and replica during Redis-Sentinel failover could cause the state transition to error #2766 @cheniujh

  • Fixed the issue where multiple replica instance expansions could cause full replication to fail #2756 @cheniujh

v3.5.5

New Features

  • Add a switch for the RTC model, allowing control over whether to enable the RTC model#2841@cheniujh

  • Use the RTC model to handle Pika access caching, improving Pika's read performance #2837 by#2837@cheniujh

  • For the incr and append commands, use the pksetexat command during binlog transmission to prevent data from not expiring due to incorrect operations, which could result in stale data#2833@chejinge

  • Add a scheduled task to delete logs, which by default deletes logs every 7 days. This can be configured in the config file based on your needs#2829@XiaoLiang2333

  • Move management commands out of the main thread to prevent blocking the main thread due to frequent or time-consuming management command calls#2727@chejinge

  • Organize Pika threads to avoid resource waste caused by starting unnecessary threads #2697@chejinge

  • Add the Pika benchmark tool to improve testing efficiency and generate visualized statistical charts.#2697@chejinge

Improvements

  • Optimize master-slave replication to ensure that the SlaveNode on the Master side enters the DBSync state before submitting the bgsave task, preventing the binlog from being cleared during the bgsave execution in extreme cases#2798@cheniujh

  • Support dynamic adjustment of more RocksDB parameters, allowing users to adjust parameters based on different business scenarios to improve Pika's read and write performance#2728@cheniujh

  • Optimize the locking mechanism when applying binlog to reduce unnecessary lock contention#2773@cheniujh

  • Add TCL tests for the Geo data type and fix bugs encountered during testing#2753@saz97

  • Update the Pika Docker README, allowing deployment of the Pika service in Docker according to the README#2743@luky116

  • The Pkpatternmatchdel command now supports deleting Redis Stream data types#2723@wangshao1

  • Add a replication status metric repl_connect_status, making it easier for operations personnel to clearly determine the current master-slave replication status#2656@cheniujh

  • Refactor the master-slave replication thread model on the slave node to minimize binlog consumption blocking issues#2638@cheniujh

  • Add dynamic adjustment parameters for the RocksDB Compaction strategy, allowing users to adjust the Compaction strategy according to their business needs to reduce the performance impact of the Compaction operation #2538@wangshao1

Bugfixes

  • Modify the timeout for the Pika automated test client to connect to the server, preventing test failures due to long disconnections#2863@cheniujh

  • Fixed an incorrect process in the kill client command for terminating connections #2862@cheniujh

  • Fix an issue where blpop/brpop would not update the RedisCache when updating the database, which could cause inconsistencies between the RocksDB and the RedisCache #2858@cheniujh

  • Fixed an issue where Pika did not support Redis-Sentinel.#2854@cheniujh

  • Modify the flushall logic to avoid multiple data cleanups during unified processing#2846@cheniujh

  • The GitHub CI (Continuous Integration) workflow will support three environments overall: macOS, Ubuntu, and Rocky#2823@QlQlqiqi

  • The PkPatternMatchDel command now deletes RedisCache entries along with the database entries, preventing inconsistencies between the RocksDB and the RedisCache. #2839@chejinge

  • Optimize the scope of read locks to avoid inconsistencies between master and slave data due to repeated binlog consumption #2818 by#2818@cheniujh

  • Modify the client watch key so that it becomes invalid if modified by anyone (including the client's own modifications)#2815@luky116

  • Modified the default value of slave_priority to prevent master-slave switch failures due to the absence of this setting by operations personnel.#2813@chejinge

  • The MULTI command now updates the cache simultaneously when updating the database, preventing issues with data retrieval.#2812@luky116

  • Fixed the issue of Sentinel role reversal errors during master-slave switching caused by data inconsistency between the master and slave nodes during the switch#2808@cheniujh

  • Modified the handling logic of flushdb binlog during master-slave replication to ensure sequential execution, preventing inconsistencies between master and slave data. #2808@cheniujh

  • Fix an issue where an error log would be output when executing slaveof no one#2800@cheniujh

  • Fixed inaccuracies in Pika block-cache information calculation, which resulted in incorrect memory usage calculations.#2797@bigdaronlee163

  • Modify the Handling Logic of FLUSHDB in Binlog During Master-Slave Replication to Ensure Sequential Execution and Prevent Inconsistencies Between Master and Slave#2794@cheniujh

  • Added flag, timestamp, and return value mechanisms to ensure correct handling of conflicts when executing flushdb and processing asynchronous deletion of old directories in Pika.#2790@cheniujh

  • Fix an issue where the PKPatternMatchDel command did not delete the iterator, which could result in incomplete data deletion in RocksDB#2786@wangshao1

  • Rename timerTaskThread_ to timer_task_thread_#2776@cheniujh

  • Fix an issue where the min-blob-size parameter would fail to parse, causing errors in KV separation#2767@wangshao1

  • Fix the issue of incorrect state reversal during sentinel master-slave switch caused by data inconsistency between the master and slave nodes #2766 @cheniujh

  • Fix an issue where the Zverank command would calculate incorrectly, leading to erroneous return values#2763@chejinge

  • Fix an issue where the Pksetat command did not update the RedisCache while updating the database, which could cause inconsistencies between the RocksDB and the RedisCache.#2759@chejinge

  • Fixed an error occurring during data migration with Pika-port.#2758@guangkun123

  • Fix an issue where the RsynClient did not handle failures after an abnormal exit, resulting in incomplete data during full replication#2756@cheniujh

  • Fix an issue where Pika could not be expanded in batches#2746@cheniujh

  • Corrected uninitialized parameters in slotsscan and bgsave commands to ensure proper balancing.#2745@chejinge

  • Fix an issue where incorrect return values from the SlotMigrate command could interrupt data migration#2741@wangshao1

  • Pksetexat updates the RedisCache while updating the database to avoid inconsistencies between the RocksDB and the RedisCache.#2736 @longfar-ncy

  • Fix an issue where the RedisCache layer could cause inconsistencies between the RocksDB and the RedisCache due to not using the TTL parsed by the storage layer#2729@luky116

  • Fix an issue where Stream-type data could not be compacted by RocksDB, causing expired data to persist#2724@wangshao1

  • Fix an issue where ACL authentication might fail sporadically#2714@luky116

  • Fixed an issue where Pika cmdID assignment in the Cmd initialization function could cause data race during concurrent construction.#2692@gukj-spel

  • Fixed a potential race condition in Spop when writing binlog.#2674@cheniujh

  • Fixed a data race issue in server_stat.#2671@cheniujh

  • Enhanced the full sync process to automatically retry after a timeout in multi-DB environments..#2667@cheniujh

  • Fixed a potential window crash issue under timeout scenarios in multi-DB master-slave environments.#2666@cheniujh

  • Fixed repeated unlocking issues in master-slave sync rate limiting logic.#2657@cheniujh

v4.0.0

New features

  • Added TCL tests for Pika Geo data type and fixed defects found during testing.#2753@saz97

  • Pika now supports compilation and packaging on the FreeBSD14 platform.#2711@lqxhub

  • Pika thread reorganization to avoid starting too many unnecessary threads, Threads are named for easier issue localization. #2697@chejinge

  • Mget supports multi-key query caching. Keys that miss are recorded and queried in the DB, improving Pika service read performance. #2675@chejinge

  • Codis supports the info command, allowing querying of Codis-proxy's info information. #2688@chienguo

  • Added Gtest for Floyd's compaction-filter.#2669@Mixficsol

  • Codis-proxy adds new monitoring metrics such as P99 and P95 response times. #2668@chejinge

  • Added Pika benchmarking metrics to improve benchmarking efficiency and output visualized statistical charts.#2663@luky116

  • Pika master-slave replication adds a new monitoring metric repl_connect_status to more clearly and accurately determine the current status of master-slave replication. #2638@cheniujh

  • Pika does not support duplicate keys of different types. Writing a duplicate key returns an invalid type error. #2609@Mixficsol

  • Added support for partition index filtering.#2601@vacheli

  • Pika supports the third-generation storage engine Floyd, optimizing the use of multiple rocksdb instances, the use of Blobs, and the cleanup of expired data to improve the read and write performance of Pika instances.#2413@wangshao1

Improvement

  • Updated the Pika Docker Readme to allow deploying Pika services in Docker according to the Readme. #2743@luky116

  • Improved query-caching mechanisms to reduce redundant meta value queries, enhancing both read and write performance of Pika services.#2735@wangshao1

  • Supports dynamic adjustment of more RocksDB parameters. Users can adjust parameters according to different business usage scenarios to improve Pika's read and write performance.#2728@cheniujh

  • Isolated types for HyperLogLog and String to ensure clear distinction between HyperLogLog and String operations.#2720@saz97

  • Updated PR title validation to disallow Chinese characters at the end of titles. #2718@baerwang

  • Refactored the master-slave synchronization thread model for slave nodes in master-slave replication mode to minimize binlog consumption blocking issues.#2638@cheniujh

  • Added dynamic adjustment parameters for RocksDB Compaction strategy, allowing users to adjust the strategy based on their business needs to reduce the performance impact of Compaction operations.#2538@MalikHou

Bugfix

  • Solve the issue where failing to destruct 'iter' causes 'pkpatternmatchdel' not to delete 'iter' before returning, potentially leading to RocksDB perpetually referencing a version, causing data inconsistency.#2785@wangshao1

  • Fixed an issue with parsing the config parameter min-blob-size when it includes units.#2767@wangshao1

  • Fixed an issue with abnormal return values in ZREVRANK.#2763@chejinge

  • Fixed an error occurring during data migration with Pika-port.#2758@guangkun123

  • Fixed an issue causing the Dbsize command to crash at runtime due to buffer overrun on heap allocation. #2749@wangshao1

  • Fixed an issue where multiple slaves connecting to the master during batch scaling could cause incomplete data on some slave nodes due to multiple bgsave operations in a short time.#2746@cheniujh

  • Corrected uninitialized parameters in slotsscan and bgsave commands to ensure proper balancing.#2745@chejinge

  • Fixed an issue in Slotmigrate where return values were set incorrectly, terminating data migration in exceptional scenarios. #2741@chejinge

  • Fixed an issue in Mget where not using the parsing ttl function caused some keys' ttl not to be updated, leading to data inconsistencies.#2730@chejinge

  • Fixed an issue where the pkpatternmatchdel command caused anomalies in stream data deletion due to incorrect usage.#2726@wangshao1

  • Fixed an issue where pkpatternmatchdel could not correctly delete the corresponding keys.#2717@wangshao1

  • Fixed an ACL password verification error.#2714@luky116

  • Fixed an issue where the Keyspace command did not count Stream type data. #2705@wangshao1

  • Customized processing logic for some commands to avoid binlog write issues that caused binlog parsing failures on slave nodes. #2693@cheniujh

  • Fixed an issue where Pika cmdID assignment in the Cmd initialization function could cause data race during concurrent construction.#2692@gukj-spel

  • Fixed an issue where ExpectedStale did not consider String types, causing incorrect returns if there were expired String type keys.#2682@wangshao1

  • Fixed a potential race condition in Spop when writing binlog.#2674@cheniujh

  • Added error messages for unreasonable db instance settings.#2672@Mixficsol

  • Fixed a data race issue in server_stat.#2671@cheniujh

  • Enhanced the full sync process to automatically retry after a timeout in multi-DB environments..#2667@cheniujh

  • Fixed a potential window crash issue under timeout scenarios in multi-DB master-slave environments.#2666@cheniujh

  • Fixed repeated unlocking issues in master-slave sync rate limiting logic.#2657@cheniujh

  • Release now supports automatic packaging of binary compilation packages for CentOS7 and CentOS8 platforms.#2535@baerwang

  • Fixed an issue where the getrange command on the Codis side did not return the expected result.#2510@luky116

v3.5.4

New features

  • Support for dynamic adjustment of full synchronization speed limit parameters rsync-timeout-ms and throttle-bytes-per-second#2633@cheniujh

  • Pika disk I/O speed limit parameters support OnlyRead, OnlyWrite, ReadAndWrite, with the default being OnlyWrite#2599@vacheli

  • Display the results of info key space 1 in info all and show it on the monitoring interface #2603@XiaoLiang2333

Improvement

  • Added Go tests for the slotsmigrate#2576@chejinge

  • Optimization of INFO command execution time, reducing disk check frequency #2554 @wangshao1

  • Added Redis tcl tests for five basic data types commands #2527@Mixficsol

Bugfix

  • Fixed an issue where using Pika Exporter could result in uneven slots distribution#2651@chejinge

  • Fixed an issue where the Codis dashboard could not correctly update the master instance status#2650@vacheli

  • Fixed a master-slave synchronization anomaly caused by Redis transaction binlog parsing failure#2642@chejinge

  • Fixed an issue where starting Pika Exporter without parameters caused startup failure#2640@Polaris3003

  • Fixed an issue where using Pika Operator to start a Codis-proxy cluster caused a panic#2632@chejinge

  • Fixed an issue where the cp command failed during automated tests of binaries compiled in CI #2614@cheniujh

  • Fixed an issue where an uninitialized variable caused cache startup failure#2613@chejinge

  • Fixed the abnormal function of dynamically modifying parameters of userpass and userblacklist#2600@chejinge

  • Fix the problem of inconsistent scard sscan results#2596@chejinge

  • Fix the problem that when max-rsync-parallel-num is greater than 4, slave will coredump during master-slave replication#2595@chejinge

  • Adjust the number of thread pool threads that are not commonly used to avoid performance loss due to idle running#2590 @chejinge

  • Fix the problem of Pika transaction edge test case not passing#2586 @chejinge

  • change cache-model to cache-mode#2585@chejinge

  • Fix the problem of info all deadlock after using info keyspace#2584 @chejinge

  • Solve the problem of incompatibility between 353 and 352 extreme scenarios caused by modifying the dictionary order of zsetscorekeycomparatorimpl#2583 @wangshao1

  • Fix compact deadlock problem#2581 @chejinge

  • Slotmigrate add go test#2576@chejinge

  • Update pika version used by Pika Operater#2572@chejinge

  • Fix the problem of abnormal blockcache value after config rewrite#2561@chejinge

  • Fixed the problem of incorrect value after slotmigrate config rewrite#2548@chejinge

  • Fix the problem that spop may cause inconsistency between master and slave data#2541@chenbt-hz

  • Fix the problem of out of bounds in CloseFd(it->second[i])#2539@chejinge

  • Fix the potential deadlocks in Flushall and FlushDB, and remove the FlushSubDB interface#2533@Mixficsol

  • Add a parameter to control whether to clean up data files generated by TCL tests, preventing obsolete data from occupying disk space#2507@Mixficsol

v3.5.3

New features

  • Pika supports ACL#2013 @lqxhub

  • Automatically resume service when Codis dashboard coroutine panics#2349@chengyu-l

  • During the full replication process, the slave node of the pika service does not receive read traffic requests.#2197 @tedli

  • Pika cache adds bimap data type.#2253 @chejinge

  • Delete the remaining Slots in Sharing mode. There is only DB under Pika, and there are multiple DBs under one Pika.#2251 @Mixficsol

  • Pika exporter exposes cache-related data collection indicators.#2318 @dingxiaoshuai

  • Pika supports separation of fast and slow commands.#2162 @dingxiaoshuai

  • After pika executes bgsave, retain the unix timepoint.#2167 @hero-heng

  • Pika supports dynamic configuration of the disable_auto_compations parameter.#2257 @hero-heng

  • Pika supports Redis Stream.#1955 @KKorpse

  • Pika supports large key analysis tools#2195 @sjcsjc123

  • Pika supports dynamic adjustment of Pika cache parameters#2253 @chejinge

  • Updated Pika benchmark tool to support more interface stress tests.#2222@wangshao1

  • Pika Operator supports automatic expansion of pika clusters.#2121@machinly

  • Add the CompactRange command to support compacting keys within a certain range.#2163@u6th9d

  • Add small time cost compaction policy.#2172@u6th9d

  • Upgrade RocksDB version to v8.7.3.#2157@JasirVoriya

  • Pika distributed cluster Codis proxy adds new observable indicators.#2199@dingxiaoshuai

  • Pika distributed cluster supports automatic failover.#2386@chengyu-l

  • Pika supports redis rename-command function.#2455@Mixficsol

  • Optimize codis slot migration speed and support dynamic modification of migration thread and speed.#2486 @chejinge

  • Pika supports dynamic adjustment of the max-conn-rbuf-size parameter.#2434 @HappyUncle

  • Pika-operator supports namespace and can deploy different clusters under different namespaces.#2480 @Y-Rookie

  • Pika-operator supports monitoring indicator collection and automatically launches Pika-experter.#2451 @chengyu-l

  • ACL forward compatible with userblacklist.#2459 @dingxiaoshuai

  • Enriched Pika TCL test set .#2497 @Mixficsol

  • Enriched Pika Gotest test set.#2502 @Mixficsol

Bugfix

  • Fixed an issue where Pika would accidentally delete dump files during full replication from the node.#2377@wangshao1

  • Fixed the processing logic after the slave node receives an abnormal response packet from the master during the master-slave replication process.#2319@wangshao1

  • Call disable compaction when pika executes the shutdown command to improve the process exit speed. #2345 @panlei-coder

  • Fix the problem of inaccurate Codis-dashboard Redis Memory value.#2337 @Mixficsol

  • The INFO command is time-consuming and optimized to reduce the frequency of disk checks. #2197 @chejinge

  • Fixed the issue where rsync deletes temporary files with incorrect paths and fails to delete them, causing rocksdb to fail to open.#2186@wangshao1

  • Fixed the problem that the compact, bgsave, and info keyspace commands did not specify the db name, resulting in some coredump commands.#2194@u6th9d

  • Codis dashboard uses info replication instead of info command to search master ip to reduce the performance impact on Pika. #2198 @chenbt-hz

  • Fix Pika cache to use edge cases to solve the problem of cache and DB data inconsistency in some scenarios.#2225 @chejinge

  • Fixed the issue where Segmentation fault would be reported when the dump folder is empty.#2265 @chenbt-hz

  • Fixed the problem that some command caches did not take effect due to flag calculation errors.#2217 @lqxhub

  • Fixed the problem that in master-slave replication mode, after the master instance flushdb, the slave instance cannot be accessed due to deadlock.#2249@ForestLH

  • Fixed the issue where some commands did not judge the return value of RocksDB.#2187@callme-taota

  • Fixed the problem that some command caches did not take effect due to flag calculation errors.#2217 @lqxhub

  • Fixed the problem that in master-slave replication mode, after the master instance flushdb, the slave instance cannot be accessed due to deadlock.#2249@ForestLH

  • Fixed the issue where some commands did not judge the return value of RocksDB.#2187@callme-taota

  • Fix the problem of info keyspace returning wrong results.#2369@Mixficsol

  • Standard function return value and initial value.#2176@Mixficsol

  • Fixed the problem of inaccurate network monitoring indicator statistics.#2234@chengyu-l

  • Fixed an issue where some parameters in configuration file loading were abnormal.#2218@jettcc

  • Fix Codis dashboard cpu used 100%.#2393@chengyu-l

  • Fix the problem of abnormal display of master and slave roles in Codis fe of pika.#2387@chengyu-l

  • Fix the problem of data inconsistency after migrating data.#2485@chejinge

  • Fix dbsize calculation error problem.#2494@chejinge

  • Fixed the issue of inaccurate display of the Codis-dashboard interface after scaling up or down or starting and stopping pods.#2475@chengyu-l

  • Fix the problem of repeated locking of DB layer.#2372 @Mixficsol

  • Fixed the problem of data loss caused by failure to perform full copy.#2439@wangshao1

  • Fixed the problem that during the master-slave replication process, the master instance did not correctly respond to the slave's synchronization request when executing bgsave.#2437@wangshao1

  • During the full copy process, add data synchronization status to clarify the data synchronization progress.#2430@baixin01

  • Fixed the issue where the slave database did not lock the key of the operation when applying binlog, resulting in data inconsistency.#2409 @chejinge

  • Fix the problem of master instance coredump during codis slot migration process.#2415 @chejinge

  • Fixed the problem of deleting the dump file being used during the master-slave replication process.#2377@wangshao1

  • Fixed the problem of rsync response error from slave instance during master-slave replication process.#2319@wangshao1

  • Fixed the problem that in master-slave replication mode, after the master instance flushdb, the slave instance cannot be accessed due to deadlock.#2372 @Mixficsol

v3.5.2

New features

Bugfix

  • Fixed coredump issue when using SETRANGE command in Pika. #2125 @chejinge

  • Fixed full replication issue caused by deleting Clearreplicationid from binlog. #2136 @Mixficsol

  • Modified lock granularity to improve binlog writing performance in Pika. #2129 @wangshao1

  • Added redis-copy traffic replication tool. #2044 @Mixficsol

  • Fixed potential data overflow issue in complex data types member variables. #2016 @u6th9d

  • Fixed incorrect return value issue in decr command. #2092 @dingxiaoshuai123

  • Fixed issue where SETRANGE and SETBIT commands did not retain the original key's expiration time. #2095 @u6th9d

v3.5.1

New features

  • slow log Adds statistics on queue waiting time #1997 @wangshao1

  • ReplicationID is used for primary/secondary replication #1951 @Mixficsol

  • WAL uses the disablewal command to support dynamic shutdown #2015 @Mixficsol

  • The number of threads flushed and the number of threads compaction dynamically adjust into one #2014 @Tianpingan

  • The RocksDB version was upgraded to v8.3.3 #1999 @dingxiaoshuai123

  • Added documentation for configuring Pika in Macos environment #2003 @klboke

  • Added the ability to periodically print the length of the work queue to quickly locate problems when the queue is blocked #1978 @Tianpingan

  • Added an indicator to detect the entire cluster using a pika_exporter #1953 @chenbt-hz

  • Realize automatic registration of Pika service on K8s environment, and automatically register at startup, so as to realize self-organization of cluster #1931 @machinly

Bugfix

  • Reduces unnecessary log printing by the exporter, reducing CPU utilization #1945 @Mixficsol

  • The sentinel mechanism has been upgraded to carry out logical deletion of primary nodes that fall offline #1949 @Mixficsol

  • Adjust the rate_limit parameter to fix the situation that RPS is 0 during pressure measurement #2009 @chejinge

  • Fixed the logical determination of empty path when traversing data files in INFODATA command #1996 @Mixficsol

  • Improved the description of some missing parts of the document #1962 @baerwang

  • Use make-j to improve build speed #1933 @xiezheng-XD

  • Fixed an issue where large burrs appeared on the Codis line #2016 @chejinge

  • Fixed an issue where tools could not be compiled in Macos #2011 @A2ureStone

v3.5.0

Major features

1.Removal of Rsync

  1. Remove Rsync.
  2. Implement breakpoint resuming, rate limitation, and file verification.
  3. When synchronizing master-slave in Pika, perform the master run_id verification.

2.Compatibility with More Redis Commands

  1. Support the UNLINK command.
  2. Support the INFO COMMANDSTATS command.
  3. Support the HELLO and SETNAME commands.
  4. Support the BLPOP and BRPOP commands.
  5. Added Pika original command DISKRECOVERY

3.RocksDB Version Upgrade and Tiered Compression

  1. Upgraded RocksDB version to v8.1.1.
  2. Implemented tiered compression for RocksDB.
  3. Added the RocksDB cache configuration option "num-shard-bits" to read from the configuration file.

4.Support for BlobDB:

  • In v3.5.0, we added support for BlobDB KV separation.

    #1456

    @lqxhub

  1. With this update, Pika now supports the separation of KV (Key-Value) data using BlobDB.

5.Codis Cluster Mode based on Codis

  1. Introducing Codis into Pika.
  2. Introducing Codis CI into the project.
  3. Supporting the command for Codis slot migration.
  4. Adding the "slotmigrate" status indicator for whether it is in the process of reloading.

6.Observability

  1. Added Pika observability system pika_exporter.
  2. Introduced monitoring metrics for network I/O traffic.
  3. Added metrics for tracking command execution durations.
  4. Introduced "estimate_pending_compaction_bytes" metric to analyze fragmentation.
  5. Added RocksDB metrics.

7.Cloud-Native Deployment

  • In v3.5.0, we introduced an MVP version of pika-operator, which focuses on enabling the quick deployment of a single-instance Pika service on Kubernetes.

    #1243 #1330 #1347

    @machinly

  1. Implemented fast deployment of a single-instance Pika service on Kubernetes.
  2. Implemented Pika deployment in the MiniKube environment.
  3. Added End-to-End (E2E) tests to the pika-operator.

8.Cross-platform compilation

  • In v3.5.0, Pika supports cross-platform compilation and can be compiled and used on MacOS, CentOS, and Ubuntu platforms.

    #1372 #1488

    @loveyacper @Mixficsol

  1. Supports MacOS platform

9.Multi-platform CI, Go integration tests, TCL unit tests, PythonE2E tests, CTest unit tests

  1. Added CI on CentOS environment to ensure compatibility on this platform.
  2. Added CI on MacOS environment to validate Pika's behavior on MacOS.
  3. Introduced an End-to-End (E2E) testing framework to comprehensively test Pika's functionality from end to end.
  4. Integrated CMake build environment in Github CI Workflow to facilitate the compilation process.
  5. Implemented a "populate" method in TCL scripts to simulate Redis debug populate method for test data population.
  6. Introduced a script to enable easy execution of unit tests.
  7. Added CMake files in Blackwidow and included unit tests for Blackwidow.
  8. Utilized CTest for conducting unit tests to ensure code correctness.
  9. Ported Redis testing scripts to Pika to leverage existing tests and verify Pika's compatibility with Redis.
  10. Included new tasks in the CI pipeline to verify successful compilation of Pika on CentOS systems.

Features

  • Added automatic rate limiting for "compact" operation to reduce its impact on the latency of upper-layer data read and write operations. #1374 @wanghenshui
  • Introduced the "aof_to_pika" toolset for data conversion. #1340 @Axlgrep
  • Implemented the printing of the Pika logo. #1787 @Mixficsol
  • Optimized certain code portions using clang-tidy. #1701 #1730 @longfar-ncy
  • Refactored C++98-style code to C++11-style following C++ coding guidelines. #1684 @chejinge
  • Introduced support for the "snappy" library. #1216 @kernelai
  • Added CLA (Contributor License Agreement) file. #1260 @kernelai
  • Extended memory-related configuration options to support units in K, M, or G. #1307 @lqxhub
  • Added libunwind as a dependency library. #1316 @kernelai
  • Included a compilation script for Pika. #1356 @lqxhub
  • Added "rate-limiter-bandwidth" option to pika.conf for rate limiting. #1272 @wanghenshui
  • Enhanced the "info" command by adding "redis_version" information. #1403 @wanghenshui
  • Provided CMake support for aof_to_pika tool. #1436 @A2ureStone
  • Introduced clang-formatted shell scripts. #1448 @lqxhub
  • Added a configuration option to disable the compilation of command docs. #1642 @tedli
  • Provided CMake support for benchmark_client, binlog_sender, manifest_generator, rdb_to_pika, txt_to_pika, pika_to_txt, and pika_port. #1451 @A2ureStone

Improvement

Bugfixes

Notice