我使用Memcached作为缓存系统,使用Spymemcached作为 java 客户端来将我的对象存储在缓存中。
Memcached put()/delete() 是异步的。
对于特定对象,我需要缓存中的状态反映数据库的状态。
对于这些对象,我正在考虑阻止 spyMemcachedClient.put() 方法返回的 Future 上的线程,以确保缓存反映数据库的当前状态。
就像是
changedObject -> block on Memcached.put() Future .. once it's finished -> writeToDB = every subsequent Memcached.get() object is guaranteed to be in synch with the DB
如果我不同步并且我使用 spyMemcachedClient.get() 足够快地访问缓存,则可能是该对象没有反映当前的数据库状态。
我想知道为几种对象阻止 put() 是否正确,或者这是否会大大降低我的缓存系统性能?
我可以做这样的事情还是我真的不应该这样做?
谢谢