Cụ thể hơn, từ Câu hỏi thường gặp về Redis
Lược đồ tiết kiệm nền của Redis dựa trên ngữ nghĩa sao chép-ghi-chép của fork trong các hệ điều hành hiện đại:Redis fork (tạo một tiến trình con) là một bản sao chính xác của bản chính. Tiến trình con kết xuất DB trên đĩa và cuối cùng thoát. Về lý thuyết, đứa trẻ nên sử dụng nhiều bộ nhớ như bản sao của cha mẹ, nhưng trên thực tế, nhờ ngữ nghĩa copy-on-write được thực hiện bởi hầu hết các hệ điều hành hiện đại, tiến trình cha và con sẽ chia sẻ các trang bộ nhớ chung. Một trang sẽ chỉ được nhân bản khi nó thay đổi ở phần con hoặc phần mẹ. Vì về lý thuyết, tất cả các trang có thể thay đổi trong khi quy trình con đang lưu, Linux không thể cho biết trước dung lượng bộ nhớ con sẽ chiếm, vì vậy nếu cài đặt overcommit_memory được đặt thành zero fork sẽ không thành công trừ khi có nhiều RAM trống như yêu cầu thực sự sao chép tất cả các trang bộ nhớ mẹ, với kết quả là nếu bạn có tập dữ liệu Redis là 3 GB và chỉ có 2 GB bộ nhớ trống, nó sẽ không thành công.
Đặt overcommit_memory thành 1 cho biết Linux thư giãn và thực hiện fork theo cách phân bổ lạc quan hơn và đây thực sự là điều bạn muốn đối với Redis.
Redis không cần nhiều bộ nhớ như hệ điều hành nghĩ rằng nó cần để ghi vào đĩa, vì vậy có thể xảy ra lỗi trước khi fork.