Nếu bạn đã bật chức năng bộ nhớ ảo ( EDIT:hiện không được dùng nữa ), sau đó Redis bắt đầu lưu trữ dữ liệu "không được sử dụng thường xuyên" vào đĩa khi bộ nhớ hết.
Nếu bộ nhớ ảo trong Redis bị tắt (mặc định) và maxmemory
tham số được đặt (mặc định), Redis sẽ không sử dụng thêm bất kỳ bộ nhớ nào ngoài maxmemory
cho phép. Nếu bạn chuyển maxmemory
tắt, Redis sẽ bắt đầu sử dụng bộ nhớ ảo (tức là hoán đổi) và hiệu suất sẽ giảm đáng kể.
Các phiên bản Redis mới hơn có nhiều chính sách khác nhau khi maxmemory
đạt được:
-
volatile-lru
- xóa khóa giữa các theones có bộ hết hạn, cố gắng xóa các khóa không được sử dụng gần đây. -
volatile-ttl
- xóa khóa trong số các theo thuyết có bộ hết hạn sử dụng, cố gắng xóa các khóa có thời gian tồn tại ngắn ngủi còn lại. -
volatile-random
- loại bỏ khóa arandom trong số những khóa có bộ Anexpire. -
allkeys-lru
- nhưvolatile-lru
, nhưng sẽ xóa mọi loại khóa, cả khóa bình thường hoặc khóa với một bộ hết hạn sử dụng. -
allkeys-random
-likevolatile-random
nhưng sẽ xóa mọi loại khóa, cả khóa bình thường và khóa có bộ hết hạn sử dụng.
Nếu bạn chọn một chính sách chỉ xóa các khóa có bộ EXPIRE, thì khi Redis hết bộ nhớ, có vẻ như chương trình vừa hủy bỏ thao tác malloc (). Nghĩa là, nếu bạn cố gắng lưu trữ nhiều dữ liệu hơn, thì thao tác ghi sẽ không thành công.
Một số liên kết để biết thêm thông tin:
- http://antirez.com/post/redis-as-LRU-cache.html
- http://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/