如何使用Python将JSON文件中的信息存储在缓存中?

时间:2018-09-11 14:05:12

标签: python python-2.7

我有一个Python脚本,每隔x分钟调用一次,以解析JSON文件。

JSON包含带有ID的数据点。我希望能够查看在之前的脚本运行中是否遇到了ID,以便可以将数据点中包含的信息附加到具有相同ID的旧数据中。

为此,我想将数据作为键值对存储在缓存中。在这种情况下,键是ID,值是JSON中包含的其余信息。如何在Python中执行此操作?

3 个答案:

答案 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)应该是一个不错的选择。