在读《Redis设计与实现》关于哈希表扩容的时候,发现这么一段话:
执行BGSAVE命令或者BGREWRITEAOF命令的过程中,Redis需要创建当前服务器进程的子进程,而大多数操作系统都采用写时复制(copy-on-write)来优化子进程的使用效率,所以在子进程存在期间,服务器会提高负载因子的阈值,从而避免在子进程存在期间进行哈希表扩展操作,避免不必要的内存写入操作,最大限度地节约内存。
1、写时复制(copy-on-write)用于Linux内核的内核同页合并功能,其他语言也有此模式,包括C、C++和Java都有实现支持
2、写时复制思想的核心是,都在读取数据时,不需要复制数据,当修改数据时,在复制,在自己的副本中修改数据。
3、,如果只有一个线程拥有数据,就不需要复制,可以自己直接修改,主要是为了性能考虑
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。