Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis làm gì khi hết bộ nhớ?

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 -like volatile-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/


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chuỗi Redis so với hàm băm Redis đại diện cho JSON:hiệu quả?

  2. Tại sao dữ liệu được lưu trữ bằng các khóa lạ trong Redis khi sử dụng Jedis với Spring Data?

  3. Spring Boot redisTemplate tự động tạo không thành công

  4. Lưu trữ các đối tượng javascript lồng nhau trong redis - NodeJS

  5. spring-redis không thể kết nối với máy chủ từ xa