主要观点:
- 许多工作负载受存储数据限制,Valkey 通过新的哈希表设计减少内存使用来缩小集群规模。
- 新哈希表旨在减少内存访问、优化内存使用,并具备增量重哈希、扫描和随机元素采样等特定功能。
- 新哈希表将键和值嵌入
serverObject
,每个桶可存储最多 7 个元素,桶内元素无内部排序。 - 替换哈希表实现后,内存使用量每键值对减少约 20 字节,带过期时间的键减少约 30 字节,一些工作负载的延迟和 CPU 使用率也有所改善。
- 哈希、集合和有序集合等嵌套数据类型在元素数量足够多时也使用新哈希表,内存使用量每元素减少约 10 - 20 字节。
关键信息:
- 现有哈希表“dict”的内存布局及查找过程。
- 优化内存访问和减少内存分配的要点。
- 新哈希表的结构,包括桶的布局、元数据部分及二级哈希的作用。
- 不同版本的内存使用情况对比图及结果。
- 参与项目的作者 Viktor Söderqvist 是 Ericsson 的开源开发者和 Valkey 的维护者之一。
重要细节:
- 新哈希表中桶满时用指针指向子桶,链长通常较短。
- 二级哈希可快速排除不匹配的条目,减少 false positive。
- 特殊感谢 Rain Valentine 提供图表和帮助集成哈希表。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。