我正在Django中实现聊天系统。
我在决定如何创建决定谁是在线用户的模型时遇到了一些麻烦。我看到两个问题:
有关如何对此进行建模的任何建议?
答案 0 :(得分:1)
将此信息存储在缓存中。这是短暂的,它不属于长期数据库,访问需要非常快。
您不需要存储大量信息来处理聊天会话,因此将其存储在用户的会话中(您可以使用匿名的非登录用户执行此操作,然后从“真实”中提取信息)如果他们碰巧登录了用户表,那么这是正确的方法,只要您使用纯缓存会话后端和memcached之类的东西。
答案 1 :(得分:0)
我同意Pail McMillan的回答,即使用缓存是正确的方法。在过去,我使用Django's low level caching API只允许您集中存储键值对。
我不确定这会有多高效,但你可以简单地存储一个以逗号分隔的当前在线用户ID的字符串:
from django.core.cache import cache
cache.set('users-online', '4,6,12,34')
然后:
for user_id in cache.get('users-online').split(','):
user = User.objects.get(pk=user_id)
# do something with the user ...