发布说明
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.