我正在使用flask和redis。我决定尝试rom redis form (http://pythonhosted.org/rom/)来管理一些稍微复杂的数据结构。我有一个对象列表,比如:
urls = ['www.google.com', 'www.example.com', 'www.python.org']
我也有房间模型:
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)
这似乎是工作在我的开发设置。在我的情况下,我希望每天从头开始使用一些数据,并希望为一些对象设置过期时间。我已经浏览了http://pythonhosted.org/rom/rom.html#上的文档,但除了请求缓存之外,没有找到对过期的引用。是否有一种方法允许房间对象过期?
Rom不提供自动过期数据的内置方法。这是故意的。我已经在前三次场合解释了原因:
- https://github.com/josiahcarlson/rom/issues/40
- https://github.com/josiahcarlson/rom/pull/47
- https://github.com/josiahcarlson/rom/issues/62
TL,博士;Redis并没有提供必要的内部机制来实现这个自动(触发器)。我在上面链接的拉请求中提供了2个解决方案。
从文档中,最好创建一个新的expire_at float列,index=True,该列可以存储实体到期的时间。然后,要使数据过期,可以使用:Model.query。Filter (expire_at=(0, time.time())).limit(10) to(例如)获取最多10个需要过期的最老实体
https://josiahcarlson.github.io/rom/rom.html expiring-models-ttls