5

CouchDBには、Redisのように期限切れに相当するものがありますか?

Redisの有効期限の例:

#!/usr/bin/env python
import redis
redis_server = redis.Redis(host='localhost',port=5477,db=0)
r.set('cat','meow')
r.expire('cat',10)
# do some work and ten seconds later...
r.get('cat') # returns None
4

3 に答える 3

8

いいえ。CouchDBにはこれがありません。

Redis怠惰なアプローチを使用し、キーがはるかに早く期限切れになった場合でも、検査時にキーを削除します。また、@ antirezが指摘したように、Redisは、データベースサイズを制御できるように、期限切れのキーのランダムなセットを1秒ごとに削除します。

CouchDBがこれをネイティブにサポートしていない場合は、オブジェクトの上に小さなレイヤーを追加して、この作業を行うことができます。有効期限フィールドを追加し、オブジェクトを取得しようとするときは、有効期限が将来であることを確認してください。そうでない場合は、期限切れのオブジェクトを削除します。さらに、削除されたオブジェクトは永続化する必要があるため(削除アクションを複製できるようにするため)、削除されたドキュメントを定期的に検索して削除する必要もあります

于 2011-06-11T20:56:48.933 に答える
3

良い質問!簡単な答えは「いいえ」ですが、別の答えはmuです。

慣用的なCouchDBのアプローチはexpires_at、レコード(ドキュメント)にタイムスタンプを含めることです。次に、有効期限のタイムスタンプでインデックス付けされたビューがあります。クライアントは、タイムスタンプ値がnow以上のタイムスタンプでキー設定されたビューをクエリします。結果は、すべての有効なドキュメントのリストになります。

これには、クライアントのクロックを同期させる必要があります。中央の信頼できるサーバーが1つある場合(非常に一般的な状況)、同期する簡単な方法は、クライアントがCouchにpingを実行し、そのHTTPDateヘッダーを確認することです。

于 2011-06-12T00:57:44.653 に答える
2

いいえ。これはmemcache/redis機能です。CouchDBはデータ永続的なデータベースです。

于 2011-06-11T20:53:05.600 に答える