2.8.0
Important Notice
Dependency Updates: RocksDB is bumped from 8.8.1 to 8.11.3 in this version.
Highlights:
Set the default value of redis-cursor-compatible
to yes, so from this version, Kvrocks' SCAN
will be compatible with Redis by default. We also proudly announce that RESP3 is fully supported now, you can enable the RESP3 feature via set resp3-enabled yes
.
In addition, the cluster now can use the rocksdb write-batch to migrate slot data between instances via the APPLYBATCH
command, which is faster and consumes less CPU compared to the replay command way.
It is worth mentioning that the community is working on the RedisSearch
module, and we look forward to seeing RedisSearch
in a future release.
New Features
- Add the support of JSON.MGET command by @skyitachi in #1930
- Add support of new command: ssubscribe and sunsubscribe by @raffertyyu in #2003
- Add support of new command: RESET by @chrisxu333 in #1999
- Add the ApplyBatch command for data migration scenario by @caipengbo in #2010
- Add support of new command: ZRANDMEMBER by @JxLi0921 in #2016
- Add support of the command ZDIFF and ZDIFFSTORE by @MaheshMadushan in #2021
- Add support of the command RENAME&RENAMENX by @jihuayu in #2026
- Add support of using hyper clock cache as the block cache by @JxLi0921 in #2031
- Implement the unify WAL iterator by @caipengbo in #2040
- Initialize metadata and tag indexing encoding for RediSearch by @PragmaTwice in #2066
- Allow to migrate cluster slot by raw write batch by @caipengbo in #2067
- Add search metadata encoding for numeric fields by @PragmaTwice in #2086
- Support BIT and BYTE options in the BITCOUNT command by @kay011 in #2087
- Add a noindex flag to search metadata by @PragmaTwice in #2094
- Set the redis-cursor-compatible field to yes in the initial configuration by @jihuayu in #2103
- Implement index updating for numeric and tag field by @PragmaTwice in #2115
- Fallback to use the redis command migration type if the target don't support the ApplyBatch command by @caipengbo in #2117
- Implement the RESP3 boolean type by @git-hulk in #1991
- Implement the RESP3 null for the nil string and array by @git-hulk in #2017
- Implement RESP3 set type for the set data structure by @git-hulk in #2024
- Add the support of RESP3 map type by @git-hulk in #2028
- Add RESP3 big number by @git-hulk in #2034
- Add the support of RESP3 double type by @git-hulk in #2053
- Add support of RESP3 attribute type by @git-hulk in #2088
- Add support of RESP3 verbatim string by @wsehjk in #2102
- Add support of RESP3 in Lua by @git-hulk in #2119
Bug Fixes
- Fix redundant ERR prefix in cluster redirect error message by @git-hulk in #1928
- Avoid to fetch old value in SET command if NX/XX/GET/KEEPTTL is not set by @git-hulk in #1968
- Fix parse BITCOUNT by @tisonkun in #1979
- Fix RESET arity and command flags by @enjoy-binbin in #2018
- Fix crash in zset store getkeys, fix zdiff/bzmpop range, add tests by @enjoy-binbin in #2051
- Bugfix: BITCOUNT/BITPOS negative handling fixing by @mapleFU in #2069
- Fix incorrent bytes to calculate length of ziplist/listpack 32bit string by @git-hulk in #2124
Improvements
- Add redis_mode/kvrocks_mode fields in INFO SERVER by @enjoy-binbin in #1927
- Add the rocksdb's block cache hit/miss count to the INFO command by @git-hulk in #1938
- Add SET command KEEPTLE and GET options supported by @jihuayu in #1935
- Add no-multi no-script flags to SHUTDOWN command by @enjoy-binbin in #1957
- Add support of EXPIRETIME and PEXPIRETIME by @kay011 in #1965
- Record and export the keyspace hit/miss count to INFO command by @git-hulk in #1971
- Add the support of ANALYZE command to inspect the performance of RocksDB by @chrisxu333 in #1943
- Add INFO comment when DB not scaned by @jihuayu in #1956
- Allow to get the latest sequence number when creating the backup by @git-hulk in #1987
- Add support of BITFIELD_RO by @jyf111 in #1990
- Add the support of ZINTER and ZINTERCARD by @kay011 in #1992
- Replace manual RedisType check by calling IsSingleKVType by @PragmaTwice in #2013
- Make the result of SRANDMEMBER random by @wsehjk in #2032
- Ignore max-db-size limit when deleting data or writing aux informations by @caipengbo in #2047
- Use human readable string instead of the integer when printing flush/compaction reason by @git-hulk in #1962
- Add usage of std::move where compiler suggested by @torwig in #2099
- Check if the type is an entry while iterating the stream subkeys by @jihuayu in #2112
- Make BITPOS in Bitmap handling
stop_given
by @mapleFU in #2085 - Make COMMAND command consistent with redis when the renamed command exists by @caipengbo in #2123
- Bump jsoncons to 0.173.2 by @aleksraiden in #2082
- Bump speedb to 2.8.0 by @aleksraiden in #2080
- Bump fmtlib to 10.2.1 by @aleksraiden in #2081
- Bump jsoncons to 0.173.4 by @aleksraiden in #2089
- Bump span-lite to 0.11.0 by @aleksraiden in #2092
- Bump typo checker in CI to 1.18.1 by @aleksraiden in #2093
- Bump rocksdb to v8.9.1 by @aleksraiden in #1933
- Bump rocksdb to 8.10.0 by @aleksraiden in #2005
- Bump rocksdb to 8.10.2 by @aleksraiden in #2110
- Bump rocksdb to 8.11.3 by @aleksraiden in #2122
Misc
- Unify the way of parsing metadata by @git-hulk in #1964
- Optimize ParseMetadata by introducing RedisTypes by @PragmaTwice in #1967
- Update copyright date in NOTICE by @PragmaTwice in #1975
- Refactor kvrocks2redis via rocksdb secondary instance by @maochongxin in #1963
- The storage engine type awareness in Kvrocks by @MaheshMadushan in #1973
- Implement an unify key-value iterator for Kvrocks by @git-hulk in #2004
- Minor refactor the implementation of the command ZRANDMEMBER by @mapleFU in #2025
- Add type check before metadata decode by @jihuayu in #2015
- Minor: improve the style of zdiff by @mapleFU in #2027
- Clarification in kvrocks.conf that disable_wal will break replication by @pleaseshutup in #2029
- Run SonarQube scan in Github Actions to support coverage analysis by @PragmaTwice in #2030
- Fix build file missing in SonarCloud CI by @PragmaTwice in #2033
- Fix shell command in SonarCloud CI by @PragmaTwice in #2037
- Only runs sonar action on the main repo by @jihuayu in #2038
- Minor: avoid the implicit conversion from PinnableSlice to Slice by @mapleFU in #2039
- Remove the second parameter of MultiBulkString by @PragmaTwice in #2042
- Use condition argument of cv.wait instead of loop by @PragmaTwice in #2043
- fix(debug command): update err msg
int
->integer
by @AntiTopQuark in #2046 - Enhance error handling and types in BITFIELD by @mapleFU in #2041
- Dump github event information in CI by @PragmaTwice in #2049
- Fix sonar action can't get PR number by @jihuayu in #2048
- Fix Sonar CI fail in unstable branch by @PragmaTwice in #2052
- Add additional environment prerequisites by @caicancai in #2054
- Refine ctor definition of CommandParser by @PragmaTwice in #2044
- Use CommandKeyRangeVecGen to support retrieving store keys by @enjoy-binbin in #2055
- Fix coverage upload failure in Sonar CI by @PragmaTwice in #2060
- Remove raw pointers and useless copy in TestBase by @PragmaTwice in #2062
- Making RedisBitmapTest also tests Bitmap String by @mapleFU in #2075
- chore: add x on Social Media by @caicancai in #2090
- Unify the workflow of command executing in connection and scripting by @PragmaTwice in #2095
- Improve code style for auth in ExecuteCommands by @PragmaTwice in #2096
- Use require.JSONEq instead of require.Equal for the JSON string by @jihuayu in #2100
- ci: Update actions to avoid Node.js deprecated warning by @aleksraiden in #2098
- Fix flaky test cases in keyspace_test.go by @git-hulk in #2104
- Small corrections of spelling in a config file by @aleksraiden in #2107
- Bitmap: Extract common bit operations like GetBit and SetBitTo by @mapleFU in #2105
- Bit: Minor refactor BitOp by @mapleFU in #2108
- Initialize the unified index updater for HASH and JSON data type by @PragmaTwice in #2111
- Extract a rand sample helper and support negative sample count in "Set" by @mapleFU in #2113
New Contributors
- @JxLi0921 made their first contribution in #2016
- @pleaseshutup made their first contribution in #2029
- @wsehjk made their first contribution in #2032
- @caicancai made their first contribution in #2054
Full Changelog: v2.7.0...v2.8.0-rc1