首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS crashes服务器上读取/写入Python字典到Redis缓存

在AWS crashes服务器上读取/写入Python字典到Redis缓存
EN

Stack Overflow用户
提问于 2016-08-11 17:05:00
回答 1查看 384关注 0票数 0

我正在开发一个计算密集型的django应用程序。使用芹菜,执行耗时的任务,使用Redis作为代理,并用于缓存发布。

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

我有一个rest api,可以频繁地在Redis缓存中编写/更新python字典(在1秒后)。每次api调用都会启动一个新任务。

在localhost上,一切都运行得很好。但在Aws上,elastic-beanstalk应用程序在运行一段时间后会崩溃。

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

代码语言:javascript
复制
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上崩溃。它在本地主机上工作得很好。

EN

回答 1

Stack Overflow用户

发布于 2016-08-12 05:12:08

从文档中:

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

如果Redis不能根据策略删除密钥,或者如果策略设置为'noeviction',Redis将开始对使用更多内存的命令回复错误,如SET、LPUSH等,并将继续回复只读命令,如GET。

当使用Redis作为LRU缓存,或者设置实例的硬内存限制(使用'noeviction‘策略)时,此选项通常很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38891893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档