【问题标题】:paginating over big number of records对大量记录进行分页
【发布时间】:2014-04-05 06:55:18
【问题描述】:

我有大量记录,我只显示部分使用分页。没关系。由于我有很多页面,因此我在每个页面上都获得了计数,是否有避免这种情况的技术?

我有一个 redis 作为会话存储和一个 postgres 数据库。

我在考虑是否可以在会话中保存查询结果计数(我只有一个搜索页面)。

我敢肯定,对于长期这样做的人来说,这是经常发生的事情。

可以做些什么来优雅地解决这个问题? (不是要计算每一页的数量)

【问题讨论】:

    标签: ruby-on-rails ruby postgresql pagination redis


    【解决方案1】:

    您可以使用无限滚动。这是 facebook 等主要网站使用的。

    http://railscasts.com/episodes/114-endless-page-revised?view=asciicast

    【讨论】:

      【解决方案2】:

      使用sorted_set来存储你的记录,你可以从一个有限制的特定索引中获取记录。

      【讨论】:

        【解决方案3】:

        使用来自 Postgres 表 triggers 的 NOTIFY 和 LISTEN 以及单独的服务器端进程(例如 python 脚本)。

        保持你的 redis 数据是最新的,确保处理回滚的事务。

        您可以使用 redis ZSET(排序集)来存储易于分页的“索引”。 如果您有多种排序数据的方法,则可以使用带有实际数据的 HSET,您可以通过 id 从 ZSET 中引用这些数据。 在 redis Lua 脚本中,您可以在一次调用中快速返回结果,该调用使用 ZSET id 收集 HSET 数据。

        亲爱的,TW

        【讨论】:

          猜你喜欢
          • 2011-11-05
          • 1970-01-01
          • 2010-10-05
          • 2015-05-02
          • 2017-10-09
          • 1970-01-01
          • 2012-08-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多