Highlights
This new release introduces significant features, improvements, and fixes. A critical fix is that the server will crash when passing a negative offset in SETRANGE command, please see #2783.
We introduce a few new commands and enhance some old commands, including:
- HSETEXPIRE to allow setting a hash field with expiration time
- KMETADATA to fetch the metadata of a key
- POLLUPDATES supports using RESP output format
- LASTSAVE supports iso8601 time format
Another highlight is that the community is working to support the TDIGEST data structure, but we don't bring it to this release for stable consideration.
New Features
- feat(command): add support of RESP output format for the POLLUPDATES command by @git-hulk in #2745
- feat(hash): add the support of HSETEXPIRE command (HSET + EXPIRE) by @ltagliamonte-dd in #2750
- feat(server): add rocksdb_version, server_time_usec, executable and config_file to INFO by @PragmaTwice in #2781
- feat(info): support to specify multiple sections for INFO by @PragmaTwice in #2772
- feat(tdigest): add TDIGEST.CREATE and TDIGEST.INFO command by @LindaSummer in #2799
- feat(tdigest): add tdigest algorithm and storage encoding implementations by @LindaSummer in #2741
- feat(config): allow to configure the rocksdb's max compaction bytes by @git-hulk in #2802
- feat(tdigest): add TDIGEST.ADD command by @wyxxxcat in #2803
- feat(tdigest): add TDIGEST.MAX/MIN command by @wyxxxcat in #2811
- feat(cmd): add iso8601 time format parameter to LASTSAVE command by @SharonIV0x86 in #2822
- feat(tdigest): add support of TDIGEST.RESET command by @SharonIV0x86 in #2826
- feat(cmd): add new command KMETADATA by @ltagliamonte-dd in #2827
Improvements
- feat(script, function): remove global lock for EVAL, EVALSHA and FCALL by @PragmaTwice in #2731
- feat(main): refine shutdown message to show signal name by @PragmaTwice in #2733
- chore(command): add admin flag for permission-required commands by @PragmaTwice in #274
- feat(info): move the last scan time as field to the info keyspace section by @git-hulk in #2775
- refactor: adding stream elements to response by @torwig in #2836
- chore(metadata): wrap RedisTypeNames as a method by @PragmaTwice in #2838
- feat(conn): optimize RESP reply functions by @PragmaTwice in #2847
- feat(tdigest): refactor buffer merge's min max updating logic by @LindaSummer in #2814
Bug Fixes
- fix(script): disable exclusive commands to be executed in scripting by @PragmaTwice in #2732
- chore(x.py): fix several typing issue in x.py by @PragmaTwice in #2739
- feat(script): allow blocking commands in scripting by @PragmaTwice in #2740
- chore(config): enable the RESP3 potocol by default by @git-hulk in #2746
- fix(tests): flaky test case in BLMPOP command by @git-hulk in #2754
- fix(tls): remove SSL_sendfile path to avoid errors in replication fullsync by @PragmaTwice in #2757
- ci: fix build-push-action by supplying context argument by @PragmaTwice in #2780
- fix(string): the server will crash when passing a negative offset in SETRANGE command by @git-hulk in #2783
- fix(zset): The ZREMRANGEBYRANK command is missing LogData of the zset data type by @sryanyuan in #2808
- fix: access nullptr issue in LoadClusterNodes by @RiversJin in #2820
- fix(cluster): Resolve forbidden slot range cleanup bug during slot mgration by @RiversJin in #2829
- fix(bloom): crash due to pinnable slice in bloom filter by @mapleFU in #2843
- fix(bloom): try to fix GetSelf invalid access by @mapleFU in #2867
Misc
- chore(dockerfile): switch compiler to clang by @PragmaTwice in #2737
- chore(server): check the arity should happen before the flag generate by @git-hulk in #2736
- chore(cmake): add c to language list of
project()
by @PragmaTwice in #2738 - chore: bump fmtlib to 11.1.3 by @aleksraiden in #2744
- chore: update copyright year in NOTICE by @PragmaTwice in #2748
7 - ci: add arm64 job for check-docker by @PragmaTwice in #2749
- ci: refactor nightly image workflow and utilize arm64 runners by @PragmaTwice in #2751
- chore: replace DCHECK_NOTNULL to suppress warnings by @PragmaTwice in #2753
- chore(ci): bump crate-ci/typos to 1.29.5 by @aleksraiden in #2755
- build: remove glibc-specific dependencies by @err931 in #2759
- ci: add an alpine-based build & test workflow by @PragmaTwice in #2760
- chore(test): update godeps by @aleksraiden in #2762
- ci: release nightly images for version tags by @PragmaTwice in #2769
- ci: isolate geoadd and georange test and run it in parallel by @lyang24 in #2768
- chore(server): improve code style of
Server::Get..Info()
by @PragmaTwice in #2774 - chore: bump googletest to 1.16.0 by @aleksraiden in #2776
- ci: keep git history while building nightly images by @PragmaTwice in #2779
- chore(server): return InfoEntries instead of string in Get..Info() by @PragmaTwice in #2778
- chore: bump jsoncons to v1.2.0 by @aleksraiden in #2782
- chore(test): update godeps by @aleksraiden in #2785
- chore(ci): bump minica to v1.1.0 by @aleksraiden in #2787
- chore(ci): bump action apache/skywalking-eyes/header to 0.7.0 by @aleksraiden in #2788
- ci: execute long running go tests in parallel by @lyang24 in #2763
- chore(build): bump golang-lint to 1.64.3 by @aleksraiden in #2786
- chore: bump Zstandard (zstd) to v1.5.7 by @aleksraiden in #2797
- chore(test): update godeps by @aleksraiden in #2798
- chore(ci): bump crate-ci/typo to v1.2.7 by @aleksraiden in #2790
- chore: remove the duplicate const error message by @git-hulk in #2800
- chore: remove redundant code in the method
Execute
ofslaveof
cmd by @fukua95 in #2801 - chore: bump cpptrace to v0.8.0 by @aleksraiden in #2796
- chore: bump fmtlib to 11.1.4 by @aleksraiden in #2809
- chore: remove need for the intermediate variable in Size function by @SharonIV0x86 in #2810
- chore(ci): bump crate-ci/typos to v1.30.0 by @aleksraiden in #2812
- chore: bump jsoncons v1.3.0 by @aleksraiden in #2816
- chore(test): update go deps by @aleksraiden in #2824
- chore: bump rocksdb to v9.11.1 by @aleksraiden in #2818
- build(deps): bump go-redis/v9 from 9.7.1 to 9.7.3 by @dependabot in #2840
- chore(deps): bump Google Snappy to v1.2.2 by @aleksraiden in #2854
- chore(deps): bump oneTBB to 2022.1.0 by @aleksraiden in #2855
- chore(ci): bump crate-ci/typos to v1.31.0 by @aleksraiden in #2857
- chore: set CMAKE_POLICY_VERSION_MINIMUM & pin the version of dorny/paths-filter by @PragmaTwice in #2870
- ci: migrate macos-13 build to macos-14 by @PragmaTwice in #2876
- chore(deps): bump jsoncons to v1.3.1 by @aleksraiden in #2875
- chore(deps): bump cpptrace to v0.8.3 by @aleksraiden in #2872
New Contributors
- @err931 made their first contribution in #2759
- @lyang24 made their first contribution in #2768
- @wyxxxcat made their first contribution in #2803
- @SharonIV0x86 made their first contribution in #2810
- @dependabot made their first contribution in #2840
Full Changelog: v2.11.1...v2.12.0