代码之家  ›  专栏  ›  技术社区  ›  Stan Bright

使用Redis跟踪在线用户的两种方法。哪个更快?

  •  3
  • Stan Bright  · 技术社区  · 14 年前

    最近我发现了一篇不错的博客文章,介绍了在Redis的帮助下跟踪网站在线用户的两种方法。

    1)智能钥匙及其过期设置 http://techno-weenie.net/2010/2/3/where-s-waldo-track-user-locations-with-node-js-and-redis

    2)设置和交叉 http://www.lukemelia.com/blog/archives/2010/01/17/redis-in-practice-whos-online/

    你能判断哪一个应该更快吗?为什么?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Tom Clarkson    14 年前

    为了知道某个特定用户是否在线,第一种方法会快得多——没有什么比读取单个密钥更快的了。

    在特定页面上查找用户并不是很清楚(我没有看到交叉键或通配符键的性能的硬数字),但是如果集合足够大,在这两种实现中都会导致性能问题,那么无论如何显示它们都是不实际的。

    为了将用户与朋友列表匹配,我可能也会采用第一种方法——即使几百个GET操作(检查列表中每个人的状态)在多个集合上的交集(如果这些集合有大量记录并且难以维护)也应该优于交集。

    redis集更适用于不能用键完成的事情,特别是在获取集合中的所有项比检查集合中是否有特定项更重要的情况下。