利用redis缓存热门数据,分页的一种思路

转载 2016年08月29日 16:14:26

普通分页

一般分页做缓存都是直接查找出来,按页放到缓存里,但是这种缓存方式有很多缺点。

如缓存不能及时更新,一旦数据有变化,所有的之前的分页缓存都失效了。

比如像微博这样的场景,微博下面现在有一个顶次数的排序。这个用传统的分页方式很难应对。

一种思路

最近想到了另一种思路。

数据以ID为key缓存到Redis里;

把数据ID和排序打分存到Redis的skip list,即zset里;

当查找数据时,先从Redis里的skip list取出对应的分页数据,得到ID列表。

用multi get从redis上一次性把ID列表里的所有数据都取出来。如果有缺少某些ID的数据,再从数据库里查找,再一块返回给用户,并把查出来的数据按ID缓存到Redis里。

在最后一步,可以有一些小技巧:

比如在缺少一些ID数据的情况下,先直接返回给用户,然后前端再用ajax请求缺少的ID的数据,再动态刷新。


还有一些可能用Lua脚本合并操作的优化,不过考虑到Lua脚本比较慢,可能要仔细测试。

如果是利用Lua脚本的话,可以在一个请求里完成下面的操作:

查找某页的所有文章,返回已缓存的文章的ID及内容,还有不在缓存里的文章的ID列表。

其它的一些东东:

Lua是支持LRU模式的,即像Memcached一样工作。但是貌似没有见到有人这样用,很是奇怪。

可能是用redis早就准备好把redis做存储了,也不担心内存的容量问题。

利用redis缓存热门数据,分页的一种思路

普通分页 一般分页做缓存都是直接查找出来,按页放到缓存里,但是这种缓存方式有很多缺点。 如缓存不能及时更新,一旦数据有变化,所有的之前的分页缓存都失效了。 比如像微博这样的场景,微博下面现在有一个顶次...
  • hengyunabc
  • hengyunabc
  • 2014年04月21日 19:26
  • 25289

redis缓存分页数据

在我们开发项目的过程中,经常会对数据做分页展示,如果每次请求都去查询数据库,当访问量增大时,势必会加重数据库的负载,降低数据库性能。然而,有些数据的是极少变动的,或者说变动的频率不是很高,这时如果将这...
  • xiaoping2017
  • xiaoping2017
  • 2017年09月23日 11:09
  • 655

通用的分页思路

最终效果如下思路前台需要展示的是一页一页的数据,每一页包含的信息有两个:当前页数(pageNow)、每一页有条数据(pageSize)。其他的事情前台不用关心,它的目的只是展示数据。而数据的来源在后台...
  • change_on
  • change_on
  • 2017年04月19日 20:17
  • 1047

java分页的思路

最近强烈的感到语言都是一些工具,而思想很重要,
  • yipanbo
  • yipanbo
  • 2014年09月04日 09:08
  • 3932

整理 java 分页思路

今天刚学分页还有些不是很清楚 想整理一下..     1.要先创建数据库 把要显示的数据存入表里     2.就要开始写代码了 写一个JavaBean 创建数据库属性 用于存取     3.创建...
  • Zhangxichao100
  • Zhangxichao100
  • 2016年05月06日 22:40
  • 4626

服务端实现分页效果的几种思路

对于通过列表展示的数据来说,分页是一个不择不扣的需求,毕竟人类肉眼目所能及的极限摆在那里 如果把分页交给前端搞了话,那么就需要一次性把数据全量查出来,交给前端,浏览器能Hold住多大的数据,会吃...
  • hfcenter
  • hfcenter
  • 2017年12月12日 20:58
  • 223

Redis学习笔记(九)redis实现时时直播列表缓存,支持分页[热点数据存储]

需求说明在直播平台中,用户查看直播列表,这个列表数据具有时时性,并且是强热点数据,也就是说每时每刻都可能会有新的直播。这些数据如果每次都去数据库读取肯定是不可取的,所以这可以考虑使用redis来实现。...
  • fgyibupi
  • fgyibupi
  • 2016年12月23日 14:12
  • 5903

利用redis缓存对 list集合中的数据 进行分页操作

先说 存储的结构:  这里做了两块缓存  绿色是存储索引的缓存  黑色是存数据的缓存 翻页时需要两个参数  向上查询/或向下查询    还一个是   从第二页开始查询时需要一个索引的参数 ...
  • lyhjava
  • lyhjava
  • 2016年11月30日 17:24
  • 1423

菜鸟对于写分页的体会和思路

首先是因为在一些项目中经常要用到分页(真分页),所以我也写一下自己在学习分页中的一些技巧和心得体会。第一次学分页是在学校老师教我们用的一个分页控件"AspNetPager742DLL"  第三方分页插...
  • w673534737
  • w673534737
  • 2014年01月18日 12:11
  • 1346

.net redis数据缓存(二) redis操作List集合带分页

redis net
  • qq_27337291
  • qq_27337291
  • 2017年08月27日 12:51
  • 803
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用redis缓存热门数据,分页的一种思路
举报原因:
原因补充:

(最多只允许输入30个字)