オブジェクトをキャッシュに保存するために、キャッシュシステムとしてMemcachedを使用し、JavaクライアントとしてSpymemcachedを使用しています。
Memcached put()/ delete()は非同期です。
特定のオブジェクトの場合、キャッシュ内の状態がDBのステータスを反映している必要があります。
これらのオブジェクトについては、spyMemcachedClient.put()メソッドによって返される未来のスレッドをブロックして、キャッシュがDBの現在のステータスを反映していることを確認することを考えています。
何かのようなもの
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()で十分な速度でキャッシュにアクセスした場合、オブジェクトが現在のDBステータスを反映していない可能性があります。
いくつかの種類のオブジェクトに対してput()をブロックするのが正しいのか、それともキャッシュシステムのパフォーマンスが劇的に低下するのか疑問に思っています。
私はそのようなことをすることができますか、それとも私は実際にそうすることになっていないのですか?
ありがとう