redis怎么缓存用户列表,做到可以分页展示?
generalpaging
generalpagingcaching是直接查找出来,逐页放入缓存,但是这种缓存方法有很多缺点。
如果无法及时更新缓存,则一旦数据更改,所有以前的分页缓存都将无效。
例如,在像微博这样的场景中,微博下有排名靠前的次数。这在传统的分页中很难处理。
一个主意
最近,我想到了另一个主意。
数据缓存在redis中,id为key;
数据id和排序得分保存在redis的skiplist中,即zset;
查找数据时,首先从redis的skiplist中提取相应的分页数据,得到idlist。
使用multi-get一次从redis获取id列表中的所有数据。如果有缺少某个id的数据,将从数据库中搜索并返回给用户,搜索到的数据将按id缓存在redis中
在最后一步,您可以有一些提示:
例如,如果缺少某个id数据,首先直接返回给用户,然后前端使用ajax请求丢失的id数据,然后动态刷新。
还有一些优化可能会将操作与lua脚本合并,但是考虑到lua脚本比较慢,您可能需要仔细测试它们。
如果您使用的是lua脚本,则可以在一个请求中完成以下操作:
查找页面上的所有文章,返回缓存文章的id和内容,以及不在缓存中的文章的id列表。
其他事项:lua支持lru模式,类似memcached。但奇怪的是,没有人这样使用它。
也许redis已经准备好存储redis很长时间了,我不担心内存容量。
原文标题:laravel更改分页参数 redis怎么缓存用户列表,做到可以分页展示?,如若转载,请注明出处:https://www.saibowen.com/wenda/17881.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。