gpt4 book ai didi

python - 使用 python 字典作为临时内存中键值数据库?

转载 作者:太空狗 更新时间:2023-10-30 00:51:39 27 4
gpt4 key购买 nike

我需要类似临时内存中键值存储的东西。我知道有像 Redis 这样的解决方案。但我想知道使用 python 字典是否可行?甚至可能更快?因此,想象一个 Tornado(或类似的)服务器运行并在内存中保存一个 python 字典,然后根据 HTTP 请求返回适当的值。

为什么我需要这个?作为服务的一部分,存储了键值,但它们具有以下属性:它们越新,访问的可能性就越大。所以我想在内存中保留最后 100 个键值(以及写入磁盘)以便更快地检索。

如果服务器宕机,字典可以从磁盘中恢复。

有没有人做过这样的事情?我在这里完全遗漏了什么吗?

PS:我认为使用 WSGI 服务器是不可能的,对吧?因为据我所知,您无法在各个请求之间将某些内容保存在内存中。

最佳答案

我肯定会使用 memcached。设置完成后,您可以像在我的示例中那样轻松地装饰您的函数/方法:

#!/usr/bin/env python

import time
import memcache
import hashlib

def memoize(f):

def newfn(*args, **kwargs):
mc = memcache.Client(['127.0.0.1:11211'], debug=0)
# generate md5 out of args and function
m = hashlib.md5()
margs = [x.__repr__() for x in args]
mkwargs = [x.__repr__() for x in kwargs.values()]
map(m.update, margs + mkwargs)
m.update(f.__name__)
m.update(f.__class__.__name__)
key = m.hexdigest()

value = mc.get(key)
if value:
return value
else:
value = f(*args, **kwargs)
mc.set(key, value, 60)
return value
return f(*args)

return newfn

@memoize
def expensive_function(x):
time.sleep(5)
return x

if __name__ == '__main__':
print expensive_function('abc')
print expensive_function('abc')

不要关心网络延迟,因为这种优化会浪费的时间。

关于python - 使用 python 字典作为临时内存中键值数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9800396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com