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
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
Redis
使用惰性方法并在检查时删除键,即使它们可能已经过期了很多。此外,正如@antirez 指出的那样,Redis 将每秒左右删除一组随机的过期密钥,以控制数据库大小。
如果 CouchDB 本身不支持这一点,您可以在对象之上添加一个小层来完成这项工作。添加一个过期字段,并在尝试检索对象时,确保过期是在将来。如果没有,请删除过期的对象。此外,由于已删除的对象必须保留(因此可以复制删除操作),您还需要定期查找已删除的文档并清除它们。
好问题!简单的答案是“否”,但另一个答案是mu。
惯用的 CouchDB 方法是expires_at
在记录(文档)中添加时间戳。接下来有一个视图,按过期时间戳索引。客户端将查询以时间戳为键的视图,时间戳值大于或等于现在。结果将是所有有效文件的列表。
这需要同步客户端的时钟。如果您有一个中央权威服务器(一种非常常见的情况),一种简单的同步方法是让客户端 ping couch 并检查其 HTTPDate
标头。
不,这是 memcache/redis 功能。CouchDB 是数据持久化数据库。