2009-03-04 30 views
8

Tôi muốn thực hiện algorythm sau trên ehcache:Lấy đối tượng hết hạn trong ehcache

  • cố gắng để có được một yếu tố từ bộ nhớ cache
  • nếu nguyên tố này chưa hết hạn
    • phục vụ giá trị
  • khác
    • phục vụ giá trị hết hạn
    • làm mới phần tử trong nền

Nhưng tôi không bao giờ có được một yếu tố hết hạn (Element.isExpired()). Tôi đã cố gắng để chơi với cấu hình bộ nhớ cache của tôi (đặc biệt là TimeToLive và TimeToIdle) nhưng tôi không thể dường như làm cho nó hoạt động như tôi muốn. Tôi có thể liệt kê các khóa trong bộ nhớ cache, nhưng nếu tôi "get()" một phần tử đã hết hạn, tôi luôn nhận được một giá trị rỗng.

Tôi đang làm gì sai?

+1

Chỉ tò mò thôi, bạn đã từng đưa ra giải pháp hay phương pháp thay thế cho điều này chưa? –

Trả lời

4

Bạn không làm gì sai. Tài liệu nói rằng việc nhận được một phần tử đã hết hạn sẽ xóa nó khỏi bộ nhớ cache và trả về null.

Tôi nghi ngờ lần duy nhất một phần tử sẽ xuất hiện khi hết hạn là nếu bạn có một sự lắng nghe của người nghe sự kiện cho các sự kiện hết hạn nhưng tôi không thể nói tôi đã từng thử nghiệm điều này.

+0

Chú ý với trình xử lý sự kiện (notifyElementExpiry). Chỉ có khóa của phần tử bị kown. Theo câu sau trong API: Khi Element đã hết hạn, chỉ có khóa của phần tử được biết là gì. Chỉ cần có vấn đề với điều này. – schoeggii