Go Map VS Redis Set
Quite similar
TL;DR
struct
map
[]buckets
bucket
#kv
load_factor
扩容
缩容
GO Map
hmap
buckets, oldbuckets
bmap
8
6.5
2/1.25
-
Redis Set
dict
dictht[0], dictht[1]
dictEntry
1
1/5/0.1
2
0.5


负载因子: 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是减半
最后更新于
这有帮助吗?