背景: 最近生产环境中某个Set的Redis集群经常出现短暂的内存降低现象,经过查看日志是因为在RDB持久化所造成的内存突降(日志中:RDB: 4929 MB of memory used by copy-on-write ),其根本原理是RDB持久化的过程中,Redis借助操作系统提供的写时复制技术(Copy-On-Write,COW),在执行bgsave(snapshot)快照的同时,能够处理正常的写请求. 1.RDB持久化原理 写时复制技术: 如果主线程要修改一块数据,那么这块数据就会被
写时复制(Copy on Write)技术是一种程序中的优化策略,多应用于读多写少的场景.主要思想是创建对象的时候不立即进行复制,而是先引用(借用)原有对象进行大量的读操作,只有进行到少量的写操作的时候,才进行复制操作,将原有对象复制后再写入.这样的好处是在读多写少的场景下,减少了复制操作,提高了性能. Rust中对应这种思想的是智能指针Cow<T>,定义如下: pub enum Cow<'a, B> where B: 'a + ToOwned + 'a + ?Sized, { B