Redis Set
可以看到是很接近的,几个基本点
Go Map
- 负载因子: load_factor = 6.5
- 碰撞:key冲突 -> overflow
- 增量扩容 :load_factor>6.5,<1024翻倍或者1/4
- 等量扩容:overflow>max(2^15, key),空洞太多
- 动态扩容:2个bucket,迁移old-new时rehash,标记key是否已经迁移
- map不执行缩容
Redis Set
- load_factor =dictht[0].use/dictht[1].size 1(没有AOF/BGSAVE)/ 5
- 动态扩容:翻倍;迁移0-1时rehash,标记key是否已经迁移;完成后0,1标记交换
- 动态缩容:load_factor<0.1是减半
map | []buskets | busket | #kv | load_factor | 扩容 | 缩容 | |
---|---|---|---|---|---|---|---|
GO Map | hmap | buskets, oldbuskets | bmap | 8 | 6.5 | 2/1.25 | - |
Redis Set | dict | dictht[0], dictht[1] | dictEntry | 1 | 1/5/0.1 | 2 | 0.5 |