2.5.0
Important Notice
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.
New Features
- Add Redis-compatible cursors for
SCAN
commands by @jihuayu in #1489 - Add support of the ZMPOP command by @MizukiCry in #1468
- Add support of the ZRANGESTORE command by @jihuayu in #1482
- Add support of the SINTERCARD command by @infdahai in #1444
- Add support of the BZMPOP command by @Yangsx-1 in #1490
- Add support of the new command ZUNION by @uds5501 in #1502
- Support slot batch for CLUSTERX SETSLOT by @infdahai in #1414
- Support blocking migration for the cluster migrate command by @ellutionist in #1418
- Support RocksDB auto-tune rate limiter for the background IO by @wanghenshui in #1424
Improvements
- Add separate mutex that protects blocked stream consumers by @torwig in #1471
- Add test case for the HMGET command by @zevin02 in #1467
- Escape the special chars in the monitor command output by @wy-ei in #1476
- Add a particular test case for HGETALL with async_io=true by @torwig in #1401
- Relax the lower bound of the expiration test case to make tests more stable by @git-hulk in #1437
- Add the ability to use the '*-123' pattern to specify stream entry ID via XADD by @torwig in #1405
- Allow default username and fix case-sensitive check in HELLO by @rueian in #1406
- Introduce UniqueEvent and CallbackBase for a more intuitive event handle by @PragmaTwice in #1420
- Add redis-cli to the nightly image by @ColinChamber in #1415
- Docker image based on Alpine Linux by @aleksraiden in #1434
- Use constexpr to simplify the getXXX method in EvbufCallbackBase by @ellutionist in #1443
- Migrate go-redis/redis to redis/go-redis by @infdahai in #1446
- Don't use auto-retry in unit/type/list_test.go by @git-hulk in #1463
- Use the rocksdb mget to improve the performance by @zevin02 in #1453
- Parse the timeout parameter as double in the blocking command by @Yangsx-1 in #1518
- Warning message for invalid key in the configuration file by @gloof11 in #1498
- Bump rocksdb v8.3.2 by @aleksraiden in #1516
- Add TakeFloat to Command Parser by @PragmaTwice in #1505
- Don't allow the instance replication of itself and its own replicas by @uds5501 in #1488
- Bump fmtlib to 10.0.0 by @aleksraiden in #1435
- Bump jsoncons to v170.0.2 by @aleksraiden in #1438
- Bump luaJIT to c0a8e68 by @xiaobiaozhao in #1399
- Bump jsoncons to v0.170.1 by @aleksraiden in #1426
- Bump oneTBB to v2021.9.0 by @aleksraiden in #1432
Bug Fixes
- Fix backtrace lib for musl building support by @aleksraiden in #1431
- Return error from CommandZRangeGeneric in case of unexpected range_type by @torwig in #1430
- Fix flaky test case in Go unit/type/list.go by @git-hulk in #1449
- Fix flaky test in migration timeout by @git-hulk in #1464
- Fix all weird out parameters
int *ret
in the codebase by @jihuayu in #1479 - Fix crash when hitting the perflog command rule by @git-hulk in #1481
- Fix SCRIPT misleading error message by @enjoy-binbin in #1561
- Fix ZUNION hang in syntax error by @enjoy-binbin in #1559
- Avoid printing the invalid configuration key when loading namespaces by @git-hulk in #1558
- Fix GETEX not checking wrong type error causing key overwriting by @enjoy-binbin in #1546
- LSET return no suck key instead of NotFound when the key does not exist by @enjoy-binbin in #1557
- Fix plain GETEX wrongly removing expiration time by @enjoy-binbin in #1548
- Fix compile error after upgrading the rocksdb by @git-hulk in #1542
- Fix ZMPOP/BZMPOP duplicate parameters by @enjoy-binbin in #1543
- Fix stdin usage text in PrintUsage by @enjoy-binbin in #1537
- Fix the inconsistent response behavior with Redis in memory usage command by @git-hulk in #1539
- Fix incorrect mount data in docker volume by @aleksraiden in #1507
- Fix data race when joining the task runner by @git-hulk in #1493
- Fix a few typos in CMakeLists.txt by @torwig in #1496
- Fix ZRANGE command should return an empty array when count = 0 by @infdahai in #1492
Build & CI related
- Suppress error in TBB to make build failure for GCC 12 and above by @torwig in #1440
- Add path-filter by @tisonkun in #1422
- Fix needs param by @tisonkun in #1427
- Tidy dockerfile by @tisonkun in #1477
- Disable
-static-libgcc
on MacOS building by @mapleFU in #1555 - Automatically download the golangci-lint if not exists by @infdahai in #1491
Misc
- Remove global server ptr getter used in scripting by @PragmaTwice in #1486
- Replace header <sys/poll.h> to <poll.h> in io_util.cc by @aleksraiden in #1433
- Support specify release candidate number by @ZENOTME in #1419
- Remove useless type cast in redis_slot.cc by @PragmaTwice in #1409
- Rename internal macro ENABLE_NEW_ENCODING to METADATA_ENCODING_VERSION by @PragmaTwice in #1408
- Print error when occurring the flaky test in TestBitmap by @infdahai in #1473
- Refine functions and add parsing test to set and zset by @zncleon in #1475
- Avoid manually releasing DB pointer via unique_ptr by @PragmaTwice in #1487
- Show CI badge for unstable branch exactly by @tisonkun in #1547
- List each command on a separate line in list type by @infdahai in #1531
- Drop
incubator-
prefix from Go test files, as well as yaml files and comment lines by @git-hulk in #1519 - Remove incubator/incubating from README by @PragmaTwice in #1514
- Remove user and group from Docker by @aleksraiden in #1513
- Remove incubating from the x.py and DISCLAIMER file by @git-hulk in #1515
- Remove ConnContext pointers to prevent manual allocation by @PragmaTwice in #1499
- Rename KvrocksLabs to RocksLabs in cmake by @PragmaTwice in #1436
New Contributors
- @rueian made their first contribution in #1406
- @ZENOTME made their first contribution in #1419
- @MizukiCry made their first contribution in #1468
- @zncleon made their first contribution in #1475
- @wy-ei made their first contribution in #1476
- @jihuayu made their first contribution in #1479
- @uds5501 made their first contribution in #1488
- @gloof11 made their first contribution in #1498
Full Changelog: v2.4.0...v2.5.0-rc2