我有一个Python脚本,每隔x分钟调用一次,以解析JSON文件。
JSON包含带有ID的数据点。我希望能够查看在之前的脚本运行中是否遇到了ID,以便可以将数据点中包含的信息附加到具有相同ID的旧数据中。
为此,我想将数据作为键值对存储在缓存中。在这种情况下,键是ID,值是JSON中包含的其余信息。如何在Python中执行此操作?
答案 0 :(得分:1)
我认为 Ring 可以解决您的问题。 https://ring-cache.readthedocs.io/en/latest/
当您的函数如下所示:
def your_function(data_id):
return ...
环的适应性如下:
import ring
storage = {}
@ring.dict(storage, expire=60) # 60 seconds cache in `storage` dict
def your_function(data_id):
return ...
它们将存储在storage
字典中(除非您终止该进程)。
如果即使在终止进程后仍要保留高速缓存,则类似@ring.memcache
或@ring.redis
之类的方法将对您有所帮助。
答案 1 :(得分:0)
我将使用sqlite db,但是您可以轻松地使用另一个json文件来保持遇到的ID的连续计数。我认为您不会轻易将其保留在内存中以及在python会话之间进行访问。
答案 2 :(得分:0)
按惯例,在这种情况下,您将使用hash map/hash table的数据结构,其中ID可能是您的密钥,而值则是序列化数据的哈希值-
看到python中的字典实际上是使用哈希表实现的,这个问题是否值得付出努力,而不是每次都解析整个事物并重建检索到的对象,这取决于您究竟是什么尝试处理数据以及数据量。
如果您正在寻找基于键值的存储,为了在python脚本中增加持久性,那么no-sql方法(例如mongoDB)应该是一个不错的选择。