Redis python-rom对象到期。

时间:2015-07-21 14:14:51

标签: python redis

我正在使用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对象过期?

2 个答案:

答案 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