【问题标题】:Django: how to store a lot of data between requests if I don't have a databaseDjango:如果我没有数据库,如何在请求之间存储大量数据
【发布时间】:2019-01-19 08:04:34
【问题描述】:

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

用户需要使用他的 Strava 帐户进行身份验证,然后我的应用会从 Strava API 下载他的活动数据。

由于我的应用程序中没有用户帐户 - 只有 Strava 身份验证 - 我决定不使用数据库。

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

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

我的另一个想法是仅使用数据库来存储 JSON 文件,但在用户会话完成后立即删除数据 - 但这似乎有点矫枉过正。

或者有更好的方法吗?

【问题讨论】:

    标签: python django


    【解决方案1】:

    我想你可以在这里使用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 进行搜索、过滤等。您也可以存储特定时间的数据。 redis 集成请查看this library

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      相关资源
      最近更新 更多