发布说明

Engula v1.0 发布说明

发布时间窗口: 2024 年 1 月 – 2024 年 11 月
重点: 压缩能力与字典训练、可观测性与指标、测试与工具链、稳定性修复。

🚀 亮点

v1.0 版本完成了压缩能力与配套工具链落地:引入 ZSTD/FSST 压缩与自适应字典、完善指标与统计输出,并补齐测试与发布流水线。

✨ 新特性

压缩与字典:

  • Added FSST support and split FSST/ZSTD build.
  • Added adaptive dictionaries for ZSTD compression.
  • Added KV compression for hashtable and t_hash compression support.
  • Added "MC DICTINFO" command and "MC OBJECT" command for compression inspection.

可观测性与指标:

  • Added the engula info command to print internal statistics.
  • Added new metrics and confirmed redis-exporter metrics.
  • Added metrics and stats for dict recycle and LIST compression.

集群与运维:

  • Cluster failover done.
  • Added bgsave check.

测试与工具:

  • Added ginkgo framework and updated ginkgo test cases.
  • Added TCL test cases support.
  • Added init.sh script for setting up development environment.

🛠 改进与重构

压缩与资源回收:

  • Refactored mc compress and dict train flow.
  • Enhanced dict recycle policy and split reclaim process for HT entries.
  • Removed confused compress_stats_tot_try_cnt_ metrics.

许可与合规:

  • License will be expired 90 days after the compile time.
  • Changed the license expire date from 90 days to 30 days.

发布与版本:

  • Updated engula-server-lib version.
  • Docs: update engula version to 1.0.1.
  • Added engula-server Dockerfile and refined dockerfile/workflow image names.

🐛 Bug 修复

  • Fixed invalid memory access in compress_cron_task for hash object recycle.
  • Fixed wrong database id for ht element.
  • Fixed rdb checksum parsing issue.
  • Fixed serverPanic issue.
  • Fixed exception in human_readable_to_size() when str_size is '0B'.
  • Fixed "access after free" issue when AOF reloading.
  • Fixed memory double free in hrandfieldWithCountCommand().
  • Fixed misc compile errors on Linux/macOS (including hiredis).

🛠 基础设施与 CI

  • Added workflow to auto release cross-platform tarball on tag.
  • Added weekly auto build.
  • Updated GitHub Actions workflows and build docker images.

Engula v2.0 发布说明

发布时间窗口: 2024 年 12 月 – 2025 年 3 月
重点: 核心内存引擎集成、基础碎片整理、数据结构支持。

🚀 亮点

本版本引入 eallocator 内存引擎,并与 Valkey 深度集成,奠定高性能内存管理基础:包括 ZSTD 压缩、Memory Block 碎片整理,以及对复杂数据类型(Hash、Set、Listpack)的专门处理。

✨ 新特性

核心引擎集成:

  • Integrated Valkey with eallocator and wrapped the key-value store into ekvstore.
  • Introduced eallocator support for basic memory arena management.
  • Added support for Mutable and Immutable memory blocks.

压缩与编码:

  • Added support for ZSTD compression in earena.
  • Implemented Variable Byte Encoding for integers.

数据结构支持:

  • Added eallocator support for Hash objects and Set objects.
  • Refactored Listpack to support Set and Hash objects efficiently.
  • Implemented eobj serialization and deserialization.

可观测性:

  • Introduced the engula info command to print internal statistics.

🛠 改进与重构

碎片整理:

  • Rolled out Memory Defragmentation Phase 2 (merging blocks) and Phase 3.
  • Added background threads specifically for zip and defragmentation tasks.
  • Optimization: Empty blocks are no longer added to the defrag request list.

内存管理:

  • Supported up to 32KB record contents in dense/sparse memory blocks.
  • Optimized async deletion using a waitable queue in batch mode to reduce CPU usage.
  • Refactored elpobj pointers.

🐛 Bug 修复

  • Fixed ZUNION errors when mixing Set and ZSet types.
  • Fixed bugs related to HINCRBY results not saving to listpack.
  • Resolved memory leaks in e-record and fixed "access after free" issues.
  • Fixed Universal Test (UT) errors for bit operations.

Engula v2.1 发布说明

发布时间窗口: 2025 年 4 月 – 2025 年 11 月
重点: 性能调优、大 Value 支持、模块系统、上游同步(Valkey 8.1 / Redis 7.2)。

🚀 亮点

2.1 版本聚焦性能与可扩展性:包括 I/O 线程与哈希表优化等显著性能提升,并新增对 4GB 以上 Value 的支持。同时对齐 Valkey(8.1.4)与 Redis(7.2)的最新上游版本兼容性。

✨ 新特性

扩展性与存储:

  • Added support for values larger than 4GB.
  • Implemented Active Defragmentation.
  • Added support for compress groups.

模块系统:

  • Added Engula module support.
  • Implemented Module GIL (Global Interpreter Lock) support.

上游兼容性:

  • Merged Valkey 8.1.4 and Valkey 8.1.1.
  • Adapted codebase to support Redis 7.2 and related unit tests.

⚡ 性能改进

I/O 与线程:

  • Performance improvements for 8 IO threads and 2 IO threads.
  • Added async IO notify functionality.

哈希表优化:

  • Improved overall performance for hashtable GET operations.
  • Optimized rehash performance and reduced decompression counts for HMGET.
  • Implemented memory prefetch for rehash operations.

内存与延迟:

  • Reduced p99 latency.
  • Implemented quick async free.
  • Disabled lazyfree_lazy_user_flush by default to optimize flushing behavior.
  • Supported 64KB page size for ARM64 architecture.

🛠 基础设施与 CI

构建系统:

  • Added automated packaging for Linux EL7 (CentOS 7) tarballs.
  • Added montplex/ubuntu-build docker image for actions.
  • Updated GitHub Actions workflows significantly.

🐛 Bug 修复

  • Fixed VM_HSet bug in the module system.
  • Fixed issues related to test scripts.
  • Addressed compilation tasks in eallocator.