gpt4 book ai didi

ruby-on-rails - 如何扩展 auth_token 的非常短的到期时间?

转载 作者:可可西里 更新时间:2023-11-01 11:22:37 24 4
gpt4 key购买 nike

我正在使用 Mongodb 来存储用户数据,包括用户状态(在线|离线|忙碌)。到期时间只有几秒钟。如果几秒钟后用户没有出现(发送保活请求),我想将状态设置为离线。

我正在为此寻找可扩展的解决方案。我正在考虑添加“lastseen”属性并运行 cron 作业来更新状态,但我认为它不可扩展。

有更好的方法吗?我如何使用 Redis 或 Memcashed 来帮助我解决这个问题?

最佳答案

您可以使用 TTL 集合。 http://docs.mongodb.org/manual/tutorial/expire-data/

一种可行的技术是收集具有 last_seen 时间戳的 session 。一旦 last_seen 时间戳超过 X 秒,TTL 集合将被配置为删除 session 。只要 session 在线,您就会定期刷新 last_seen 时间戳以防止它被清除。

示例:

  1. 设置 TTL 集合:

    db.sessions.ensureIndex( { last_seen:1 },{ expireAfterSeconds: 60 } );

  2. Ping 使 session 保持事件状态(如果 session 不存在则创建 session )

    db.sessions.update( {_id: , last_seen: }, { upsert:true } );

  3. 查询用户是否在线:

    session = db.sessions.find( { _id: } )

    • 如果返回一个文档,那么用户在线
    • 如果没有文档返回,那么他们就离线了

关于ruby-on-rails - 如何扩展 auth_token 的非常短的到期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com