4

所以我将登录用户上传的 youtube 视频元数据存储在 django 的缓存中。元数据看起来像这样:

{'user': {'channels': [{'id': 1, 'etag': '2', 'videos': [{'id': '1', 'etag': '2'},]},]}

每个不同的用户都有自己的元数据。现在我想更新存储在缓存中的这些数据(例如更新一些频道视频)。我可以做类似的事情吗?

cache.set('user', channels[0]['videos']=[new list], 30)?

提前致谢。

4

1 回答 1

3

鉴于 Django 的缓存框架支持多种后端,我怀疑是否可以直接在缓存中操作 Python 对象的内部,因为它需要后端来理解 Python 对象。你能得到的最接近的是......

value = cache.get('user')
value['channels'][0]['videos'] = <new list>
cache.set('user', value)

如果您需要更精细的更新粒度,则必须为每个用户使用多个密钥,例如...

username = 'user'
videos_key_name = '%s/videos' % username
channels_key_name = '%s/channels' % username
cache.set(videos_key_name) = whatever
cache.set(channels_key_name) = whatever

...尽管这将需要更改结构的设计。

于 2013-04-23T13:24:44.600 回答