0

有効期限1秒でcouchbaseキャッシュに値を追加しましたが、20秒以上で期限切れになりました。membase のキャッシュ有効期限ポリシーとは何ですか?

これが私のコードです

    public string TestCache()
    {
        String spoon = null;
        using (var client = new CouchbaseClient())
        {

            spoon=client.Get<string>("Spoon");
            if(string.IsNullOrEmpty(spoon))
            {
                client.Store(StoreMode.Set,
                             "Spoon",
                             "Hello, Couchbase! Cache data is" + DateTime.Now.ToString(),
                             TimeSpan.FromSeconds(1));
            }

            spoon = client.Get<string>("Spoon");
        }

        return string.IsNullOrEmpty(spoon)
        ? "Can not get data from cache"
        : "Data from cache: " + spoon;
    }
4

1 に答える 1

0

まず、1秒以内に期限切れになるように設定した場合、1秒以上後に要求すると、Membaseから取得できなくなります。後で有効期限が発生するのを確認している理由は、絶対時間を指定していて、サーバーとクライアントの時間が異なるためだと思います。サーバーがクライアントから20秒遅れている場合は、このような動作が見られると思います。有効期限を1に設定してみてください。そうすれば、正しいことが起こるはずです。30日未満の値の場合、時間は相対的です。30日以上の間、時間は絶対です。

Membase内では、アイテムの有効期限が切れてもすぐには削除されません。デフォルトでは1時間ごとに実行され、すべてのキーを繰り返し処理して期限切れのキーを削除する有効期限タスクがあります。有効期限が切れるキーがたくさんある場合は、有効期限タスクをより頻繁に実行するように設定できます。アイテムが期限切れになる可能性があるもう1つの方法は、Membaseキャッシュがいっぱいになり、アイテムがメモリから削除されたときです。期限切れのアイテムもこのタスクで削除できます。

于 2012-03-25T04:02:47.380 に答える