gpt4 book ai didi

python - 将 Python 字典读/写到 AWS 上的 Redis 缓存会导致服务器崩溃

转载 作者:可可西里 更新时间:2023-11-01 11:32:34 30 4
gpt4 key购买 nike

我正在开发计算密集型 Django 应用程序。使用 Celery 执行时间任务,使用 Redis 作为代理,以及用于缓存目的。

Redis 缓存用于跨 celery 任务共享大型字典结构。

我有一个休息 api 经常写入/更新 Redis 缓存中的 python 字典(1 秒后)。每个 api 调用都会启动一个新任务。

在 localhost 上一切正常。但是在 Aws 上,elastic-beanstalk 应用程序在运行一段时间后会崩溃。

当字典结构为空时不会崩溃。这是我如何更新缓存的代码。

r = redis.StrictRedis(host=Constants.REDIS_CACHE_ADDRESS, port=6379, db=0)
mydict_obj = r.get("mydict")

if mydict_obj:

mydict = eval(str(mydict_obj))
else:
mydict = {}


for hash_instance in all_hashes:

if hash_instance[1] in mydict:
mydict[hash_instance[1]].append((str(hash_instance[0]), str(data.recordId)))
else:
mydict[hash_instance[1]] = [(str(hash_instance[0]), str(data.recordId))]


r.set("mydict", mydict)

找不到解决方案,为什么 elastic-beanstalk 应用程序在 aws 上崩溃。它在本地主机上运行良好。

最佳答案

来自文档:

不要使用超过指定字节数的内存。 当达到内存限制时,Redis 将尝试删除键 根据选择的逐出策略(参见 maxmemory-policy)。

如果Redis不能按照策略删除key,或者策略是 设置为'noeviction',Redis 将开始回复命令错误 这将使用更多内存,如 SET、LPUSH 等,并将继续 回复只读命令,如 GET。

这个选项通常在使用 Redis 作为 LRU 缓存时很有用,或者设置 实例的硬内存限制(使用“noeviction”策略)。

关于python - 将 Python 字典读/写到 AWS 上的 Redis 缓存会导致服务器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38891893/

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