对大量记录进行分页

时间:2014-03-03 23:54:31

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

我有大量的记录,我只使用分页显示部分。哪个好。由于我有很多页面,我在每一页都得到了重视,有没有一个tecnique来避免这个?

我有一个redis作为会话商店和postgres数据库。

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

我确信这种情况经常发生在长期这样做的人身上。

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

使用sorted_set存储您的记录,您可以使用限制从特定索引中获取记录。

答案 2 :(得分:0)

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

使您的redis数据保持最新,确保处理回滚交易。

您可以使用redis ZSET(有序集)存储易于分页的索引'。 如果您有多种订购数据的方法,您可以使用实际数据获得HSET,您可以通过ID从ZSET引用该数据。 在redis Lua脚本中,您可以在一次使用ZSET ID收集HSET数据的调用中获得快速结果。

亲切的问候,TW