我有一個IMap
在榛木(key, value)
沒有ttl
設置在imap.put()
時。現在事件被觸發後,我想將ttl
設置爲IMap
中的這個特定鍵。因爲在這次活動的時候,我不想打電話value = imap.get(key)
,然後imap.put(key, value, 10, TimeUnit.SECONDS)
。 那麼如何設置ttl到那個特定的關鍵?將ttl設置爲Imap
0
A
回答
2
除了使用IMap
方法外,沒有直接的方法可以做到。但是,我想知道爲什麼要避免以下電話。
value = imap.get(key);
imap.put(key, value, 10, TimeUnit.SECONDS)
如果您仍想達到結果,可以使用以下其中一種方法。
致電
imap.set(key, value, 10, TimeUnit.SECONDS)
,如果你已經對你有價值。imap.set()
比imap.put()
更有效,因爲它不返回舊值。如果您可以適應再使用一個
IMap
:請使用其他地圖ttlMap<key, Boolean>
。無論何時需要爲實際的imap
中的條目設置ttl值,請在ttlMap.set(key, true, 10, TimeUnit.SECONDS);
中設置條目。現在,使用addEntryListener()
方法將MapListener
添加到ttlMap
。當來自ttlMap
的條目被驅逐時,entryEvicted(EntryEvent<String, String> arg0)
方法將被調用。在這種方法中,從實際的imap
中退出。如果你準備讓你的手髒了,你可以修改這樣的
EntryProcessor
方法process()
方法將收到一個自定義Map.Entry
與設置鍵的ttlValue的新方法的來源。
希望這會有所幫助。
相關問題
- 1. WINCACHE而TTL設置爲0
- 2. Hazelcast的TTL優先級IMap
- 3. 稍後設置cassandra ttl /設置默認ttl?
- 4. 我可以設置一個TTL爲@Cacheable
- 5. 設置Java DNS緩存TTL
- 6. 設置TTL Apache Camel JAva DSL
- 7. 設置docusign信封TTL?
- 8. Spring-Data Couchbase - 如何將TTL設置爲文檔?
- 9. 將TTL設置爲數百萬個Couchbase文檔
- 10. 如何將TTL設置爲ServiceStack.Redis中的列表值?
- 11. 爲IMAP設置JavaMail的問題
- 12. imap配置爲空
- 13. 如何修改在aerospike中以ttl爲-1設置的所有記錄的TTL?
- 14. MimeMailParser擴展IMAP設置
- 15. Mongodb,貓鼬 - 動態設置TTL時間
- 16. 設置TTL在MongoAlchemy的指數
- 17. 如何使用Ming設置TTL索引?
- 18. 在hazelcast中設置TTL /記錄到期
- 19. 使用Doctrine MongoDB設置TTL收集ODM
- 20. Cassandra:在超級列上設置TTL
- 21. 設定值與TTL
- 22. 爲Couchbase服務器中的文檔設置TTL
- 23. 我可以爲ElasticSearch索引設置TTL嗎?
- 24. 設置消息TTL爲一分小時的RabbitMQ
- 25. 如何使用Delphi SOAP webservices爲DNS緩存設置TTL?
- 26. memcached密鑰的生存時間(TTL)可以設置爲無限?
- 27. 的Cloudfront TTL設置:以最小的TTL 0時S3對象被更新
- 28. 如何在CodeIgniter中設置IMAP
- 29. 將IMAP和SMTP服務器修改爲不使用Gmail的默認設置
- 30. 在Ehcache 3 XML配置中設置TTL和TTI
感謝您的輸入@Dinesh。我不想這樣做,因爲我必須對緩存執行兩個操作。但是,要設置ttl,我必須'value = imap.get(key)'來檢查該值是否被其他客戶端更改過。所以,我用'value = imap.get(key); imap.put(key,value,10,TimeUnit.SECONDS)'。 – Viveran
@Viveran,我明白了。如果你不需要關鍵的舊值(put()的返回值),你可以使用'value = imap.get(key); imap.set(key,value,10,TimeUnit.SECONDS);'。根據你的'oldValue'的大小,它將使你的性能得到一些改進,因爲你的'OldValue'不會通過網絡從所有者節點發回到調用節點。 – Dinesh