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

pok*_*tad 5 python couchdb redis 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
Run Code Online (Sandbox Code Playgroud)

Anu*_*rag 8

不,CouchDB没有这个.

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

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

  • 不正确:Redis同时执行这两项操作,它会持续过期密钥,并且在访问时也会以懒惰方式过期. (3认同)
  • 别客气.文档的那部分实际上并不十分清楚,还有一些细节:启动非延迟到期的算法是自适应的,如果键在随机采样数据集的同时找到更多过期的键,则它开始主动使更多键过期.设计该算法是为了保证您不会以超过25%的内存中已过期的密钥结束,在最坏的情况下(在平均情况下,这远远低于25%).实际上还有一些细节,比如合并到奴隶的DEL和过期的仅附加文件......但这是关于主题:) (2认同)