Apache Kvrocks is a distributed key value NoSQL database that uses RocksDB as storage engine and is compatible with Redis protocol.
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.
stop_given
by @mapleFU in https://github.com/apache/kvrocks/pull/2085
int
-> integer
by @AntiTopQuark in https://github.com/apache/kvrocks/pull/2046
Full Changelog: https://github.com/apache/kvrocks/compare/v2.7.0...v2.8.0-rc1
Dependency Updates: RocksDB is bumped from 8.3.3 to 8.8.1 in this version.
Highlights:
We're thrilled to announce that the JSON data structure is supported now, huge thanks to @PragmaTwice and all contributors for making this happen. Also, basic capabilities of Functions have been supported to make up for the lack of modularity of the EVAL
-series commands.
From this release, the speedb is allowed to be used as an alternative to rocksdb, you have a try as simple as to append the build option -DENABLE_SPEEDB=ON
. Additionally, dynamic change number of worker threads is also supported and users can change it via CONFIG SET workers {NUMBER}
. Furthermore, numerous new commands and bug fixes have been implemented.
NOTICE: JSON and BloomFilter is not ready for the cluster mode yet.
JSON.GET
by @PragmaTwice in https://github.com/apache/kvrocks/pull/1840
-Werror
and #warning
by @PragmaTwice in https://github.com/apache/kvrocks/pull/1887
avoid_unnecessary_blocking_io
to avoid unexpected long latency by @wanghenshui in https://github.com/apache/kvrocks/pull/1903
JSON.TOGGLE basics
parameters order by @jihuayu in https://github.com/apache/kvrocks/pull/1892
Full Changelog: https://github.com/apache/kvrocks/compare/v2.6.0...v2.7.0-rc1
Dependency Updates: RocksDB is bumped from 8.3.2 to 8.3.3 in this version.
Configuration Changes: The default value of max-io-mb
is changed to 0
(unlimited), and rocksdb.level_compaction_dynamic_level_bytes
changed to yes
from no
.
Highlights: In this release, we have added support for the BloomFilter data structure and most of its commands (prefixed with BF.
). Special thanks to @zncleon and @mapleFU. Additionally, the RESTORE
command has been supported by @git-hulk to facilitate various data migration scenarios, such as using RedisShake upon Kvrocks. Moreover, TLS can now secure not only server connections but also replication connections. Furthermore, numerous new commands and bug fixes have been implemented. We extend our gratitude to all contributors!
emplace
instead of insert
for map by @PragmaTwice in https://github.com/apache/kvrocks/pull/1718
GeoHashHelper::BoundingBox
by @GoGim1 in https://github.com/apache/kvrocks/pull/1760
persist-cluster-nodes-enabled
was disabled by @git-hulk in https://github.com/apache/kvrocks/pull/1674
GETEX
not working correctly on Redis::Bitmap
by @GoGim1 in https://github.com/apache/kvrocks/pull/1743
TYPE
command with bloom filter by @GoGim1 in https://github.com/apache/kvrocks/pull/1747
Full Changelog: https://github.com/apache/kvrocks/compare/v2.5.1...v2.6.0
Highlights: This release only contains bug fixes since 2.5.0 and some critical issues need to be noticed. For #1615, the data race when reading the cluster slot's info may cause the server to crash in cluster mode, and #1568 / #1593 will also crash the server if users pass the wrong arguments.
Dependency Updates: RocksDB is bumped from 8.1.1 to 8.3.2 in this version.
Highlights: We have supported Redis-compatible SCAN
cursors so that you can use any Redis client library to perform the SCAN far painless than before. Enable it via redis-cursor-compatible
in the configuration file. Many thanks to @jihuayu. Meanwhile, lots of ZSET commands are newly supported, like ZMPOP, ZRANGESTORE, BZMPOP, ZUNION. Many thanks to @infdahai for driving them and other contributors for implementing them. The detailed changes and contributors are listed below.
SCAN
commands by @jihuayu in https://github.com/apache/kvrocks/pull/1489
int *ret
in the codebase by @jihuayu in https://github.com/apache/kvrocks/pull/1479
-static-libgcc
on MacOS building by @mapleFU in https://github.com/apache/kvrocks/pull/1555
incubator-
prefix from Go test files, as well as yaml files and comment lines by @git-hulk in https://github.com/apache/kvrocks/pull/1519
Full Changelog: https://github.com/apache/kvrocks/compare/v2.4.0...v2.5.0-rc2
Note: In this release, we have upgraded RocksDB to version 8.1.1. In addition, we have introduced a new storage encoding format that can accommodate 64-bit element count and expiration time in milliseconds. To enable this feature, you must include -DENABLE_NEW_ENCODING=ON
during the build process (which is not enabled by default). Once the new encoding is enabled, data stored using the old encoding will remain accessible for reading and writing as usual. However, any new data will be written using the new encoding format.
Full Changelog: https://github.com/apache/incubator-kvrocks/compare/v2.3.0...v2.4.0
For this release, we now upgrade the RocksDB to 7.9.2
which will significantly improve the compaction performance. Another to be noticed, Kvrocks cluster mode will persist the cluster nodes' topology in the local file by default, you can disable it in flight by config set persist-cluster-nodes-enable no
.
HrangebyLex
supports specify intervals by @tanruixiang in https://github.com/apache/incubator-kvrocks/pull/1120
modernize-use-emplace
and performance-unnecessary-copy-initialization
reported by clang-tidy by @PragmaTwice in https://github.com/apache/incubator-kvrocks/pull/1084
modernize-avoid-bind
warning reported by clang-tidy by @Phoeniwx in https://github.com/apache/incubator-kvrocks/pull/1121
For this release, we are still using rocksdb 6.29, but we will update to rocksdb 7 in the next release (as in the unstable branch).
TCL tests are now moved to Go, refer to #811.
ToString()
when encoding or decoding the key (#707)level_compaction_dynamic_level_bytes
and level base size (#497)Thanks ChrisZMF who implements slot-based data migration for Kvrocks cluster mode, this authentically makes kvrocks cluster scalable. Even though it already is used in production environments, you still should be cautious of it.
Here is a comprehensive list of changes in this release compared to 2.0.5