CouchDB是否具有相当于Redis的过期?

时间:2011-06-11 19:15:43

标签: python redis couchdb key-value-store

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

3 个答案:

答案 0 :(得分:8)

否。 CouchDB没有这个。

Redis使用惰性方法并在检查时删除密钥,即使它们可能已经过早地过期了。此外,正如@antirez所指出的,Redis将每隔一秒左右删除一组随机过期密钥,以保持数据库大小的控制。

如果CouchDB本身不支持此功能,您可以在对象上添加一个小图层来完成这项工作。添加到期字段,在尝试检索对象时,确保将来到期。如果没有,删除过期的对象。此外,由于删除的对象必须保留(因此可以复制删除操作),您还需要定期查找已删除的文档和purge them

答案 1 :(得分:2)

没有。这是memcache / redis功能。 CouchDB是数据持久性数据库。

答案 2 :(得分:2)

好问题!简单的答案是“不”,但另一个答案是mu

惯用CouchDB方法是在记录(文档)中有expires_at个时间戳。接下来有一个视图,由到期时间戳索引。客户端将查询时间戳上键入的视图,时间戳值大于或等于now。结果将是所有有效文件的清单。

这要求客户端的时钟同步。如果您有一个中央的权威服务器(一种非常常见的情况),一种简单的同步方法是让客户端ping沙发并检查其HTTP Date标头。