利用redis缓存热门数据,分页的一种思路
来源:互联网 发布:淘宝店主工具 编辑:程序博客网 时间:2024/06/04 20:46
普通分页
一般分页做缓存都是直接查找出来,按页放到缓存里,但是这种缓存方式有很多缺点。
如缓存不能及时更新,一旦数据有变化,所有的之前的分页缓存都失效了。
比如像微博这样的场景,微博下面现在有一个顶次数的排序。这个用传统的分页方式很难应对。
一种思路
最近想到了另一种思路。
数据以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做存储了,也不担心内存的容量问题。
0 0
- 利用redis缓存热门数据,分页的一种思路
- 利用redis缓存热门数据,分页的一种思路
- redis缓存分页数据
- redis分页数据的缓存策略
- 使用Redis实现抢购的一种思路
- 利用redis缓存对 list集合中的数据 进行分页操作(一)
- 利用redis缓存对 list集合中的数据 进行分页操作
- Qt+SQLite数据加密的一种思路
- redis做带分页的列表缓存
- 缓存数据redis的配置-
- 利用Spring的aop整合redis缓存
- spring boot 整合redis对查询数据做缓存( 利用spring的AOP技术)
- spring boot 整合redis对查询数据做缓存( 利用spring的AOP技术)
- 在项目中redis做缓存的一些思路
- Redis实现缓存,你应该懂的哪些思路!
- redis value为对象的排序、分页的一种实现
- redis value为对象的排序、分页的一种实现
- redis value为对象的排序、分页的一种实现
- Material Design 入门(一)——TextInputLayout和TextInputEditText
- 通过 JSP Model 深入学习 MVC
- 最靠谱的CDH5安装指南
- 在数据库中怎么判断哪个(些)字段是主码
- Vijos P1850 小朋友的数字(动态规划,最大子段和)
- 利用redis缓存热门数据,分页的一种思路
- 【剑指offer】面试题10: 二进制中1的个数
- linux下编译安装ACE6
- php CI框架下封装datatable插件处理类
- 编程之美读书笔记-分层遍历二叉树
- Auto Layout 使用心得(三)—— 自定义 cell 并使用 Auto Layout
- 利用Apache Bench测试Web引擎性能
- C#之Socket断线重连
- React Native For Android