一个关于 expunged 标记的疑问

来源:4-8 怎么解决map的并发问题?(二)

慕仔9573397

2022-07-27

为什么在 dirty 复制 read 值的时候,遇到 entry 指向 nil 的时候要标记为 entry,而不是直接忽略就是了呢?这样下一次 read 继承 dirty 的时候,这个 entry 对应的 key 不是自然就不在了吗。

个人思考:
近期删除的 key 再次被存入可能性比较高(时间局部性?),让它暂时保存在 read 中有利于提高 read 的命中率从而提高读写效率。

想知道我的想法是否是正确的?

写回答

1回答

Moody

2022-07-28

我觉得主要就是标记一下,下面的dirty没有这个key,如果遇到重新插入的情况,要在下面的dirty也插入这个key,否则dirty提升之后会丢失key。

0
3
慕仔9573397
回复
Moody
谢谢老师
2022-07-29
共3条回复

深入Go底层原理,重写Redis中间件实战

深入Go语言原理+Go重写Redis

474 学习 · 172 问题

查看课程