#[derive(Clone)]
pub struct DatabaseHolder
{
pub database_lock: Arc<Mutex<Database>>
}
目前是想要实现 redis 的 rdb 。rdb 发生的时候会有许多线程会读写 DatabaseHolder ,然后执行 rdb 的线程会获取锁,然后 clone 数据结构,再把锁 drop 掉,然后把数据写入到文件中。
碰到的问题:clone 会造成内存突增,内存大概增长一倍的样子。原生的 redis 是使用 fork+copy on write 技术实现 rdb 的,在 rust 中怎么实现呢?
1
miniliuke 171 天前
rust 有 cow 指针啊
|
2
lsk569937453 OP @miniliuke 如果用 cow 指针,数据结构怎么设计呢?
|
3
PTLin 171 天前
我在 rustcc 里回复你了,你是没看懂那个回答吗 :(
|