代码之家  ›  专栏  ›  技术社区  ›  barciewicz

Django:如果我没有数据库,如何在请求之间存储大量数据

  •  0
  • barciewicz  · 技术社区  · 7 年前

    我正在编写一个应用程序,它将以各种方式可视化Strava(运动员社交网站)用户的活动。

    用户需要使用他的strava帐户进行身份验证,然后我的应用程序从strava api下载他的活动数据。

    因为我的应用程序中没有用户帐户-只有strava认证-我决定不使用数据库。

    因此,我需要将活动数据存储在内存中。数据将非常大:例如,我在Strava上有800个活动,每个活动都是一个longish JSON。

    将数据存储在会话中 session['activities'] = some_downloaded_activities 适合这个吗?然后,我将设置API端点来查询这个会话数据,根据应用程序前端的要求对其进行过滤并返回。

    我的另一个想法是只使用一个数据库来存储JSON文件,但是在用户会话完成后立即删除数据——但这似乎是一种过度杀伤力。

    还是有更好的方法?

    1 回复  |  直到 7 年前
        1
  •  1
  •   ruddra    7 年前

    我想你可以用 Redis 在这里。每当用户进行身份验证时,活动数据(JSON)都可以直接存储在redis中,如下所示:

    import json
    import redis
    
    r = redis.StrictRedis(host='localhost', port=6379, db=0)
    user_id = request.user.id
    json_data = json.dumps(data)
    r.set(user_id, json_data)
    
    # delete key whenever the user logs out
    r.delete(user_id)
    

    您可以根据redis中的JSON进行搜索、过滤等。此外,您还可以存储特定时间的数据。请检查 this library 用于Redis集成。