我正在使用flask和redis。我决定尝试使用rom redis orm(http://pythonhosted.org/rom/)来管理一些稍微复杂的数据结构。我有一个对象列表,让我们说:
urls = ['www.google.com', 'www.example.com', 'www.python.org']
我也有rom模型:
class Stored_url(rom.Model):
url = rom.String(required=True, unique=True, suffix=True)
salt = rom.String()
hash = rom.String()
created_at = rom.Float(default=time.time)
这似乎与我的开发设置有关。在我的情况下,我想每天从头开始使用一些数据,并希望设置一些objecta的到期时间。我查看了http://pythonhosted.org/rom/rom.html#处的文档,但是在请求缓存之外没有找到过期的引用。有没有办法让rom对象过期?
答案 0 :(得分:2)
Rom不提供自动内置方法来自动使数据过期。这是故意的。我之前已经解释了之前的原因:
TL; DR; Redis不提供实现此自动(触发器)所必需的内部机制。我在上面链接的pull请求中提供了2个变通方法。
答案 1 :(得分:0)
从 rom 文档来看,最好创建一个 index=True 的新 expire_at 浮点列,该列可以存储实体何时到期。然后要使数据过期,您可以使用: Model.query.filter(expire_at=(0, time.time())).limit(10) 到(例如)最多需要过期的 10 个最旧的实体.
https://josiahcarlson.github.io/rom/rom.html#expiring-models-ttls