2

memcached カウンターがどのように機能するかを誰か教えてくれますか (または文書化されたドキュメントを参照してください)。具体的には、どのように有効期限が切れますか? Java spymemcached クライアントを使用しています。

方法

net.spy.memcached.MemcachedClient.incr(String key, int by, long def, int exp) 

「このオブジェクトの有効期限」として記述されたパラメータ「exp」を取ります

それは、カウンターへの個々の呼び出しごとに独自の有効期限があるということですか? または、 incr を呼び出すと、キーの有効期限が長くなりますか?

また、カウンター値を取得するメソッドがあればいいのではないでしょうか? または、インクリメント 0 で incr を呼び出す必要がありますか?

4

2 に答える 2

2

は既存のint exp有効期限を上書きし、インクリメントするキーを「バンプ」します。追加情報については、プロトコルのドキュメントを確認してください。

また、カウンター値を取得するメソッドがあればいいのではないでしょうか? または、インクリメント 0 で incr を呼び出す必要がありますか?

MemcachedClient.getメソッドを使用して、カウンター セルの値を取得できます。カウンターセルはMemcachedClient.set、インクリメントする前に設定する必要があります。について 100% 確信があるわけではありませんが、一部のライブラリは、インクリメントの前にカウンター セルを自動的に 0 に設定します。

賞味期限について追記。memcachedの場合、以前の有効期限が使用されますint expr。が (30 日)より大きい-1場合、UNIX タイムスタンプとして扱われます。int expr2592000

于 2012-08-21T14:16:25.420 に答える
0

ソースコードのコメントから:

新しいエントリの場合に設定する有効期限を取得します。

したがって、渡されたフラグdefexpr時間の両方が、キーが欠落している場合にのみ使用されると思われます。

私は Java プログラマーではないので、コードを理解するのは難しいと思いますが、この fooは次のようなことを実行するようです: if incr(key,value) fails, try to perform add(key,value,def,expr) and if this同様に失敗する場合は、 incr(key,value) を再試行してください。

于 2015-05-08T22:09:13.813 に答える