Releases: OpenAtomFoundation/pika
v4.0.0
🚀 New Features:
- feat:Added TCL tests for Pika Geo data type and fixed defects found during testing.(#2753)
- feat: Pika now supports compilation and packaging on the FreeBSD14 platform.(#2711)
- feat:Pika thread reorganization to avoid starting too many unnecessary threads, Threads are named for easier issue localization. (#2697)
- feat:Codis supports the info command, allowing querying of Codis-proxy's info information. (#2688)
- feat:Codis-proxy adds new monitoring metrics such as P99 and P95 response times. (#2668)
- Added Pika benchmarking metrics to improve benchmarking efficiency and output visualized statistical charts.(#2663)
- 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 )
- Pika does not support duplicate keys of different types. Writing a duplicate key returns an invalid type error.(#2609 )
- feat: Added support for partition index filtering. (#2601 )
- feat: 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 (#2413)
🐛 Fixes:
- Fixed an issue with parsing the config parameter min-blob-size when it includes units.(#2767)
- Fixed an issue with abnormal return values in ZREVRANK.(#2763 )
- Fixed an error occurring during data migration with Pika-port.(#2758)
- Fixed an issue causing the Dbsize command to crash at runtime due to buffer overrun on heap allocation.(#2749)
- 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)
- Corrected uninitialized parameters in slotsscan and bgsave commands to ensure proper balancing.(#2745)
- Fixed an issue in Slotmigrate where return values were set incorrectly, terminating data migration in exceptional scenarios. (#2741)
- 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)
- Fixed an issue where the pkpatternmatchdel command caused anomalies in stream data deletion due to incorrect usage.(#2726)
- Fixed an issue where pkpatternmatchdel could not correctly delete the corresponding keys.(#2717)
- Fixed an ACL password verification error.(#2714)
- Fixed an issue where the Keyspace command did not count Stream type data. (#2705)
- Customized processing logic for some commands to avoid binlog write issues that caused binlog parsing failures on slave nodes. (#2763)
- Fixed an issue where Pika cmdID assignment in the Cmd initialization function could cause data race during concurrent construction.(#2692)
- Fixed an issue where ExpectedStale did not consider String types, causing incorrect returns if there were expired String type keys.(#2682)
- Fixed a potential race condition in Spop when writing binlog.(#2674)
- Added error messages for unreasonable db instance settings.(#2672)
- Fixed a data race issue in server_stat.(#2671)
- Enhanced the full sync process to automatically retry after a timeout in multi-DB (#2667)
- Fixed a potential window crash issue under timeout scenarios in multi-DB master-slave environments.(#2666)
- Fixed repeated unlocking issues in master-slave sync rate limiting logic.(#2675)
- Release now supports automatic packaging of binary compilation packages for CentOS7 and CentOS8 platforms.(#2635)
- Fixed an issue where the getrange command on the Codis side did not return the expected. (#2601 )
- 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)
🧹Improvement:
- Updated the Pika Docker Readme to allow deploying Pika services in Docker according to the Readme. (#2743)
- Improved query-caching mechanisms to reduce redundant meta value queries, enhancing both read and write performance of Pika services.(#2735)
- 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)
- Isolated types for HyperLogLog and String to ensure clear distinction between HyperLogLog and String operations.(#2720)
- Updated PR title validation to disallow Chinese characters at the end of titles. (#2718)
- Refactored the master-slave synchronization thread model for slave nodes in master-slave replication mode to minimize binlog consumption blocking issues.(#2638)
- 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)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v4.0.0
📒 Documentation: PikiwiDB
Full Changelog: v3.5.4...v4.0.0
Thanks to @AlexStocks, @Mixficsol, @baerwang, @chejinge, @cheniujh, @chienguo, @guangkun123, @gukj-spel, @longfar-ncy, @lqxhub, @luky116, @saz97 and @wangshao1 for making this release possible.
Release v3.5.4
🚀 New Features:
- Support for dynamic adjustment of full synchronization speed limit parameters rsync-timeout-ms and throttle-bytes-per-second(#2633)
- Display the results of info key space 1 in info all and show it on the monitoring interface (#2603)
- Pika disk I/O speed limit parameters support OnlyRead, OnlyWrite, ReadAndWrite, with the default being OnlyWrite(#2599)
- feat: The INFO command is time-consuming and optimized to reduce the frequency of disk checks (#2554)
Improvement
- Added Go tests for the slotsmigrate(#2576)
- Optimization of INFO command execution time, reducing disk check frequency (#2554)
- Added Redis tcl tests for five basic data types commands (#2527)
🐛 Fixes:
- Fixed an issue where using Pika Operater could result in uneven slots distribution(#2651)
- Fixed an issue where the Codis dashboard could not correctly update the master instance status(#2650)
- Fixed a master-slave synchronization anomaly caused by Redis transaction binlog parsing failure(#2642)
- Fixed an issue where starting Pika Exporter without parameters caused startup failure(#2640)
- Fixed an issue where using Pika Operator to start a Codis-proxy cluster caused a panic(#2633)
- Fixed an issue where the cp command failed during automated tests of binaries compiled in CI (#2614)
- Fixed an issue where an uninitialized variable caused cache startup failure(#2613)
- Fixed the abnormal function of dynamically modifying parameters of userpass and userblacklist(#2600)
- Fix the problem of inconsistent scard sscan results(#2596)
- Fix the problem that when max-rsync-parallel-num is greater than 4, slave will coredump during master-slave replication(#2595)
- Adjust the number of thread pool threads that are not commonly used to avoid performance loss due to idle running(#2590)
- Fix the problem of Pika transaction edge test case not passing(#2586)
- change cache-model to cache-mode(#2585)
- Fix the problem of info all deadlock after using info keyspace(#2584)
- Solve the problem of incompatibility between 353 and 352 extreme scenarios caused by modifying the dictionary order of zsetscorekey comparatorimpl(#2583)
- Fix compact deadlock problem(#2581)
- Update pika version used by Pika Operater(#2572)
- Fix the problem of abnormal blockcache value after config rewrite(#2561)
- Fixed the problem of incorrect value after slotmigrate config rewrite(#2548)
- Fix the problem that spop may cause inconsistency between master and slave data(#2541)
- Fix the problem of out of bounds in CloseFd(it->second[i])(#2539)
- Fix the potential deadlocks in Flushall and FlushDB, and remove the FlushSubDB interface(#2533)
- Add a parameter to control whether to clean up data files generated by TCL tests, preventing obsolete data from occupying disk space(#2507)
📒 Documentation: PikiwiDB
Full Changelog: v3.5.3...v3.5.4
Thanks to @Mixficsol, @baerwang, @chejinge, @chenbt-hz, @cheniujh, @euvre and @wangshao1 @vacheli @XiaoLiang2333@Polaris3003 @TheCandle for making this release possible.
Release v3.5.4-rc1
🚀 New Features:
- feat: The INFO command is time-consuming and optimized to reduce the frequency of disk checks (#2554)
🐛 Fixes:
- Fixed the abnormal function of dynamically modifying parameters of userpass and userblacklist (#2600)
- Fix the problem of inconsistent scard sscan results (#2596)
- Fix the problem that when max-rsync-parallel-num is greater than 4, slave will coredump during master-slave replication (#2595)
- Adjust the number of thread pool threads that are not commonly used to avoid performance loss due to idle running(#2590)
- Fix the problem of Pika transaction edge test case not passing(#2586)
- change cache-model to cache-mode(#2585)
- Fix the problem of
info all
deadlock after using info keyspace(#2584) - Solve the problem of incompatibility between 353 and 352 extreme scenarios caused by modifying the dictionary order of zsetscorekeycomparatorimpl(#2583)
- Fix compact deadlock problem(#2581)
- Update pika version used by
Pika-operater
(#2572) - Fix the problem of abnormal blockcache value after config rewrite(#2561)
- Fixed the problem of incorrect value after slotmigrate config rewrite(#2548)
- Fix the problem that spop may cause inconsistency between master and slave data(#2541)
- Fix the problem of out of bounds in CloseFd(it->second(i))(#2539)
- Fixed a potential deadlock in
Flushall
andFlushDB
due to the locking order, and deleted the FlushSubDB interface(#2533) - Add test cases for the five basic data types commands in tcl(#2527)
- Add a parameter to control whether to clean up data files generated by Tcl tests, preventing obsolete data from occupying disk space(#2507)
🧹 Updates:
- feat:add slotmigrate test (#2576)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v3.5.4-rc1
📒 Documentation: PikiwiDB
Full Changelog: v3.5.3...v3.5.4-rc1
Thanks to @Mixficsol, @baerwang, @chejinge, @chenbt-hz, @cheniujh, @euvre and @wangshao1 for making this release possible.
Release v3.5.3
🚀 New Features:
- feat: Pika supports ACL(#2013)
- feat: Automatically resume service when Codis dashboard coroutine panics(#2349)
- feat: Pika cache adds bimap data type.(#2253)
- feat: Delete the remaining Slots in Sharing mode. There is only DB under Pika, and there are multiple DBs under one Pika.(#2251)
- feat: Pika exporter exposes cache-related data collection indicators.(#2318)
- feat: Pika supports separation of fast and slow commands.(#2162)
- feat: After pika executes bgsave, retain the unix timepoint.(#2167)
- feat: Pika supports dynamic configuration of the disable_auto_compations parameter.(#2257)
- feat: Pika supports Redis Stream.(#1955)
- feat: Pika supports large key analysis tools(#2195)
- feat: Pika supports dynamic adjustment of Pika cache parameters([#2253(https://github.com//pull/2253))
- feat: Updated Pika benchmark tool to support more interface stress tests.([#2222 (https://github.com//pull/2222))
- feat: Pika Operator supports automatic expansion of pika clusters.(#2121)
- feat: Add the CompactRange command to support compacting keys within a certain range.(#2163)
- feat: Add small time cost compaction policy.(#2172)
- feat: Upgrade RocksDB version to v8.7.3.(#2157)
- feat: Pika distributed cluster Codis proxy adds new observable indicators.(#2199)
- feat: Pika distributed cluster supports automatic failover.(#2386)
- feat: let pika slave support Redis transaction (#2441)
- feat: add namespace for kubeblocks pika cluster helm chart (#2480)
- feat: add multi key slot migrate (#2486)
- feat: support dynamic set max-conn-rbuf-size (#2434)
- feat: support deploying pika_exporter components using kubeblocks (#2473)
- feat: support building pika_exporter docker image (#2451)
- feat: add issue translation robot (#2478)
- feat: add Rename Command (#2455)
- feat: support dynamic set max-conn-rbuf-size (#2434)
- feat: pika supports kubeblocks component definition api (#2411)
🐛 Fixes:
- fix: delete cache log (#2517)
- fix: binlog is written repeatedly && not delete cache (#2485)
- fix: dbsize caculate error (#2494)
- fix: delete migrate log (#2489)
- fix: fix github action CI failure (#2491)
- fix: move Dockerfile and build_docker.sh into docker subdirectory (#2458)
- fix: no namespace in configmap, so remove the namespace (#2474)
- fix: support saving pika config to hostpath (#2476)
- fix: support removing pika instance from codis dashboard before pod stop (#2475)
- fix: acl forward compatible (#2459)
- fix: delete reduntant lock in storage (#2372)
- fix: linux arm64 spelling mistake in Makefile of pika_exporter(#2456) (#2457)
- fix: after full synchronization fails, full synchronization will be skipped directly(#2433) (#2439)
- fix: return kErr status when Master handle MetaRsync reqeust if db is not exist or doing bgsave(#2289) (#2437)
- fix: ACL user authentication errors (#2449)
- fix: change the full-sync and incremental-full failure alert message (#2430)
- fix: ci replication go test failed problem (#2435)
- fix: Fix the problem of possible slave_key conflict (#2431)
- fix: clear old pika operator (#2405)
- fix: fix variable init error (#2421)
- fix: slave instance apply db not used lock (#2409)
- fix: master coredump when slotmigrate some slots (#2415)
- fix: ci replication go test failed problem (#2435)
- fix: no namespace in configmap, so remove the namespace (#2474)
- fix: Fixed an issue where Pika would accidentally delete dump files during full replication from the node.(#2377)
- fix: Fixed the processing logic after the slave node receives an abnormal response packet from the master during the master-slave replication process.(#2319)
- fix: Call disable compaction when pika executes the shutdown command to improve the process exit speed. (#2345)
- fix: Fix the problem of inaccurate Codis-dashboard Redis Memory value.(#2337)
- fix: Fixed the issue where rsync deletes temporary files with incorrect paths and fails to delete them, causing rocksdb to fail to open.(#2186)
- fix: Fixed the problem that the compact, bgsave, and info keyspace commands did not specify the db name, resulting in some coredump commands.(#2194)
- fix: Codis dashboard uses info replication instead of info command to search master ip to reduce the performance impact on Pika. (#2198)
- fix: Fix Pika cache to use edge cases to solve the problem of cache and DB data inconsistency in some scenarios.(#2225)
- fix: Fixed the issue where Segmentation fault would be reported when the dump folder is empty.(#2265)
- fix: Fixed the problem that some command caches did not take effect due to flag calculation errors.(#2217)
- fix: Fixed the problem that in master-slave replication mode, after the master instance flushdb, the slave instance cannot be accessed due to deadlock.(#2249)
- fix: Fixed the issue where some commands did not judge the return value of RocksDB.(#2187)
- fix: Fix the problem of info keyspace returning wrong results.(#2369)
- fix: Standard function return value and initial value.(#2176)
- fix: Fixed the problem of inaccurate network monitoring indicator statistics.(#2234)
- fix: Fixed an issue where some parameters in configuration file loading were abnormal.(#2218)
- fix: Fix Codis dashboard cpu used 100%.(#2393)
- fix: Fix the problem of abnormal display of master and slave roles in Codis fe of pika.(#2387)
📚 Documentation:
- docs: change README_CN.md README.md (#2406)
🧹 Updates:
- ci: cleanup code (#2479)
- chore: build macos del python deps (#2401)
- chore(deps): bump google.golang.org/protobuf from 1.30.0 to 1.33.0 in /tools/pika_exporter (#2511)
- test: add codis integration test (#2502)
- test: add acl test (#2495)
- test: add tcl test (#2497)
- test: add replication-test-go (#2496)
- test: add rename go test (#2468)
- test: add non-cached and cached integration test (#2467)
- test: add tcl go test (#2464)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v3.5.3
📒 Documentation: PikiwiDB
Thanks to @578223592, @AlexStocks, @Mixficsol, @u6th9d, @ForestLH, @KKorpse, @MalikHou, @chejinge, @chengyu-l, @gxlct008, @hero-heng, @jettcc, @panlei-coder, @sjcsjc123, @tedli, @wanghenshui, @HappyUncle, @JackGod001, @Y-Rookie, @baerwang, @baixin01, @chenbt-hz, @dingxiaoshuai123, @Ruipu-Chang, @callme-taota, @Summer-0827, @lqxhub, @luky116, @machinly and @wangshao1 for making this release possible.
Release v3.5.3-alpha
🚀 New Features:
- feat:distable compaction during shutdown (#2345)
- feat: cache metrics (#2318)
- feat: separation of fast and slow commands (#2162)
- feat: pika support acl (#2013)
- feat: update benchmark_client to support more api commands (#2222)
- feat: Dynamically set disable_auto_compaction (#2257)
- feat: add big key tool (#2195)
- feat: Stream base commands (#1955)
- feat: Exporter for Proxy (#2199)
- feat: add lastsave cmd (#2167)
🚀 Enhancement
- feat: recover it when the goroutine caused some panic (#2349)
- feat: move streams implementation to storage layer. (#2242)
- feat:check repl state to response immediately if full sync not finished (#2197)
🐛 Fixes:
- fix: update 'info replication' command output format about db which add a colon #2375 (#2384)
- fix: keyspace's result wrong (#2369)
- fix: fix delete dump file while still in use (#2377)
- fix: rename zset_cache_start_pos -> zset_cache_start_direction (#2358)
- fix: handle rsync response error in slave side (#2319)
- fix: delete invalid primary/secondary synchronization code (#2334)
- fix:bitmap cache (#2253)
- fix: Redis Keys / Redis Memory not shown in topom dashboard (#2337)
- fix: fix version compare error in ZSetsScoreKeyComparatorImpl (#2339)
- fix: command CONFIG SET * reply array length error(#2320) (#2336)
- fix: delete slot (#2251)
- fix: duplicate closing files(#2304) (#2311)
- fix: read acl file crash on Mac OS (#2310)
- fix: without close file(#2301) (#2314)
- fix: bug with repeat key (#2306)
- fix: compilation fails (#2317)
- fix: If the localFileMap is empty, do not continue execution(#2303) (#2312)
- fix: RsyncClient::ThreadMain not close file(#2302) (#2313)
- fix: if resp->code() != RsyncService::kOk should set SyncSlaveSlot repl_state_ to kError(#2299) (#2315)
- fix: without errno in log or status when open and read file failed(#2287, #2292) (#2307)
- fix: return wrong response code when DBSync request SyncMasterSlot not exist(#2290, #2293) (#2308)
- fix :fix acl complie (#2294)
- fix: delete binglog dead code (#2274)
- fix: upgrade image tags and etcd volumeClaimTemplates (#2281)
- fix: incorrect initialization sequence about pika role and cmdstat_map(#2235) (#2278)
- fix: gcc version must be greater than or equal to 9 (#2275) (#2276)
- fix: segment fault when dump dir is empty (#2265)
- fix: cache layer crash and data confusion (#2217)
- fix:fix bug that the slave stuck while run flushdb (#2249)
- fix:cache bug && add cache test (#2225)
- fix: delete actions cache (#2236)
- fix: network statistic input bytes is not right in some case(#2223) (#2224) (#2234)
- fix:fix Zpopmaxbugs return value not same as redis (#2188)
- fix: network statistic input bytes is not right in some case(#2223) (#2224)
- fix:fix txn go test error (#2219)
- fix: fix configuration loading error (#2218)
- fix: Slow log timestamp format is inconsistent with Redis (#2212)
- fix:build time (#2211)
📚 Documentation:
🧹 Updates:
- fix: update 'info replication' command output format about db which add a colon #2375 (#2384)
- feat: update benchmark_client to support more api commands (#2222)
- fix:cache bug && add cache test (#2225)
- fix:fix txn go test error (#2219)
Version tags:
https://github.com/OpenAtomFoundation/pika/releases/tag/v3.5.3-alpha
📒 Documentation: PikiwiDB
Full Changelog: v3.5.2...v3.5.3-alpha
Thanks to @578223592, @AlexStocks, @ForestLH, @KKorpse, @MalikHou, @Mixficsol, @baerwang, @chejinge, @chenbt-hz, @chengyu-l, @dingxiaoshuai123, @gxlct008, @hero-heng, @jettcc, @lqxhub, @panlei-coder, @sjcsjc123, @tedli, @wanghenshui and @wangshao1 for making this release possible.
v3.5.2
🚀 New Features:
-
Pika adds a cache layer for hot and cold data separation, improving read performance. #2133 @chejinge@Mixficsol
-
Codis-Proxy supports dynamic configuration parameter modification. #2103 @dingxiaoshuai123
-
Completing Go Test cases. #2063@dingxiaoshuai123
-
Adds cache to improve compilation speed on CI. #2088@baerwang
🐛 Fixes:
-
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
-
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
📒 Documentation: PikiwiDB
Full Changelog: v3.5.1...v3.5.2
Thanks to @ForestLH, @chejinge, @dingxiaoshuai123,@Mixficsol, @Ruipu-Chang, @Summer-0827, @baerwang, @callme-taota, @hero-heng, @machinly, @u6th9d, @wanghenshui and @wangshao1 for making this release possible.
v3.5.2-alpha
v3.5.2
New features
-
Pika adds a cache layer for hot and cold data separation, improving read performance. #2133 @chejinge@Mixficsol
-
Codis-Proxy supports dynamic configuration parameter modification. #2103 @dingxiaoshuai123
-
Completing Go Test cases. #2063@dingxiaoshuai123
-
Adds cache to improve compilation speed on CI. #2088@baerwang
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
-
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
- In v3.5.0, we removed Rsync and replaced it with a self-developed full synchronization scheme, which has the features of breakpoint continuation, rate limit, file inspection and so on
2. Compatibility with More Redis Commands
- More Redis commands are compatible and supported in v3.5.0.
3. RocksDB Version Upgrade and Tiered Compression
- In v3.5.0, we upgraded RocksDB to version v8.1.1 and implemented tiered compression.
4. Support for BlobDB:
- In v3.5.0, we added support for BlobDB KV separation.
5. Cluster Mode based on Codis
- In v3.5.0, we introduced the Codis Cluster Mode and added support for the command to migrate Codis slots.
6.Observability
- In v3.5.0, we introduced the
pika_exporter
tool to monitor the observability metrics of Pika. Subsequently, we added several new metrics to enhance Pika's observability.
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.
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.
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
Bugfixes
- Fixed coredump caused by incompatible CPU instruction sets. #1812 @chejinge
- Fixed abnormal exit issue in the Monitor command. #1804 @Mixficsol
- Fixed incomplete configuration overwrite. #1800 @yaoyinnan
- Fixed CTest tests on MacOS. #1789 #1721 #1782 @tedli @Mixficsol
- Fixed loading master-run-id from the configuration file during process startup, which caused the need for re-syncing historical data on slave nodes. #1778 @luky116
- Fixed format error in overrides option during Pika single test. #1768 @A2ureStone
- Fixed command to retrieve INFO xxx (INFO data, INFO stats) by index instead of using INFO ALL. #1762 @yaoyinnan
- Improved instantaneous_metric to collect network metrics every 5 seconds. #1757 @yaoyinnan
- Improved config get to return complete parameters. #1593 @luky116
- Fixed possible empty slot issue. #1712 @Mixficsol
- Fixed some bugs related to version selection in the makefile. #1714 @luky116
- Fixed bug in executing HSET for the first time. #1710 @Mixficsol
- Fixed the issue of binlog offset on slave nodes being greater than master nodes, causing TrySync failure. #1681 @luky116
- Fixed a NOAUTH error test, where any command would give an error when AUTH is required. #1680 @hqh-cell
- Fixed the issue of binlog files not being automatically cleaned up when exceeding the limit. #1679 @luky116
- Fixed issues with LPUSHX and RPUSHX multi-element insertion. #1525 @ForestLH
- Fixed error in executing the BGSAVE command. #1523 @Brokenice0415
- Fixed the use of io_uring when closing RocksDB to prevent errors during linking. #1489 @lqxhub
- Fixed MacOS environment Pika compilation warnings. #1740 @Mixficsol
- Fixed error message for unsupported commands, adapted for go-redis. #1244 @wgqi1126
- Fixed a protobuf3 compilation warning. #1267 @wanghenshui
- Fixed bugs in EXISTS and DEL commands in sharding mode. #1277 @wanghenshui
- Fixed rsync auth bug. #1278 @wanghenshui
- Fixed rewrite result format to comply with Redis standards. #1339 @lqxhub
- Fixed SET NX/XX return values to match Redis behavior. #1343 @gtygo
- Fixed missing pika_master_link_status and pika_slave_priority indicators in exporter. #1726 @Mixficsol
- Fixed potential coredump when Pika uses too many file descriptors, preventing it from exceeding the ulimit. #1346 @kernelai
- Fixed initialization of group members in classes to prevent unexpected closure of the connection between redis-cli and Pika. #1390 @AlexStocks
- Fixed delete_dir snprintf bug. #1400 @wanghenshui
- Fixed thread num limitation. #1401 @wanghenshui
- Fixed redis-benchmark to get config from Pika. #1402 @wanghenshui
- Fixed initialization of class members. #1406 @AlexStocks
- Fixed issues in Pika's master-slave synchronization tests on MacOS. #1776 @Mixficsol
- Fixed NULL to nullptr. [#...
v3.5.0-alpha
Major features
1. Removal of Rsync
- In v3.5.0-alpha, we removed Rsync and replaced it with a self-developed full synchronization scheme, which has the features of breakpoint continuation, rate limit, file inspection and so on
2. Compatibility with More Redis Commands
- More Redis commands are compatible and supported in v3.5.0-alpha.
3. RocksDB Version Upgrade and Tiered Compression
- In v3.5.0-alpha, we upgraded RocksDB to version v8.1.1 and implemented tiered compression.
4. Support for BlobDB:
- In v3.5.0-alpha, we added support for BlobDB KV separation.
5. Cluster Mode based on Codis
- In v3.5.0-alpha, we introduced the Codis Cluster Mode and added support for the command to migrate Codis slots.
6.Observability
- In v3.5.0-alpha, we introduced the
pika_exporter
tool to monitor the observability metrics of Pika. Subsequently, we added several new metrics to enhance Pika's observability.
7.Cloud-Native Deployment
- In v3.5.0-alpha, we introduced an MVP version of pika-operator, which focuses on enabling the quick deployment of a single-instance Pika service on Kubernetes.
8.Cross-platform compilation
- In v3.5.0-alpha, Pika supports cross-platform compilation and can be compiled and used on MacOS, CentOS, and Ubuntu platforms.
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
Bugfixes
- Fixed coredump caused by incompatible CPU instruction sets. #1812 @chejinge
- Fixed abnormal exit issue in the Monitor command. #1804 @Mixficsol
- Fixed incomplete configuration overwrite. #1800 @yaoyinnan
- Fixed CTest tests on MacOS. #1789 #1721 #1782 @tedli @Mixficsol
- Fixed loading master-run-id from the configuration file during process startup, which caused the need for re-syncing historical data on slave nodes. #1778 @luky116
- Fixed format error in overrides option during Pika single test. #1768 @A2ureStone
- Fixed command to retrieve INFO xxx (INFO data, INFO stats) by index instead of using INFO ALL. #1762 @yaoyinnan
- Improved instantaneous_metric to collect network metrics every 5 seconds. #1757 @yaoyinnan
- Improved config get to return complete parameters. #1593 @luky116
- Fixed possible empty slot issue. #1712 @Mixficsol
- Fixed some bugs related to version selection in the makefile. #1714 @luky116
- Fixed bug in executing HSET for the first time. #1710 @Mixficsol
- Fixed the issue of binlog offset on slave nodes being greater than master nodes, causing TrySync failure. #1681 @luky116
- Fixed a NOAUTH error test, where any command would give an error when AUTH is required. #1680 @hqh-cell
- Fixed the issue of binlog files not being automatically cleaned up when exceeding the limit. #1679 @luky116
- Fixed issues with LPUSHX and RPUSHX multi-element insertion. #1525 @ForestLH
- Fixed error in executing the BGSAVE command. #1523 @Brokenice0415
- Fixed the use of io_uring when closing RocksDB to prevent errors during linking. #1489 @lqxhub
- Fixed MacOS environment Pika compilation warnings. #1740 @Mixficsol
- Fixed error message for unsupported commands, adapted for go-redis. #1244 @wgqi1126
- Fixed a protobuf3 compilation warning. #1267 @wanghenshui
- Fixed bugs in EXISTS and DEL commands in sharding mode. #1277 @wanghenshui
- Fixed rsync auth bug. #1278 @wanghenshui
- Fixed rewrite result format to comply with Redis standards. #1339 @lqxhub
- Fixed SET NX/XX return values to match Redis behavior. #1343 @gtygo
- Fixed missing pika_master_link_status and pika_slave_priority indicators in exporter. #1726 @Mixficsol
- Fixed potential coredump when Pika uses too many file descriptors, preventing it from exceeding the ulimit. #1346 @kernelai
- Fixed initialization of group members in classes to prevent unexpected closure of the connection between redis-cli and Pika. #1390 @AlexStocks
- Fixed delete_dir snprintf bug. #1400 @wanghenshui
- Fixed thread num limitation. #1401 @wanghenshui
- Fixed redis-benchmark to get config from Pika. #1402 @wanghenshui
- Fixed initialization of class members. #1406 @AlexStocks
- Fixed issues in Pika's master-slave synchronization tests on MacOS. #1776 [@Mixficsol](https://gi...