php redis 分页查询,redis如何解决分页查询
我们都知道,通过缓存查询的结果,可以极大的提升系统的服务能力,以及降低底层服务或者是数据库的压力。对于有分页条件的缓存,我们也可以按照不同的分页条件来缓存多个key。
基于SortedSet的分页查询缓存方案
首先想到的解决方法是使用@see ListOperations不再根据分页条件使用多个key,而是使用一个key,也不分页将全部的数据缓存到redis中,然后按照分页条件使用range(key,start,limit)获取分页的结果。 (推荐学习:Redis视频教程)
这个会导致一个问题,当缓存失效时,并发的写缓存会导致出现重复数据,所以想到通过使用set来处理并发时的重复数据,@see ZSetOperations
代码逻辑如下:range(key,start,limit)按照分页条件获取缓存,命中则直接返回
缓存未命中,查询(没有分页条件)数据库或是调用(没有分页)底层接口
add(key,valueScoreMap)写入缓存,expire设置缓存时间
当需要清理缓存时,直接删除key,如果是因为数据新增和删除,可以add(key,value,score)或remove(key,value)
redis中会按照score分值升序排列map中的数据,一般的,score分值是sql语句的order by filedA的filedA的值,这样能保证数据一致性
但是这种方式也存在一定问题:
这个key缓存的value确实是热数据,但可能只有少数数据被频繁使用其余的可能根本就未被使用,比如数据有100页,实际可能只会用到前10页,这也会导致缓存空间的浪费,如果使用了redis虚拟内存,也会有一定影响
sql查询由原来的分页查询变成了不分页查询,缓存失效后,系统的处理能力较之前会有下降,尤其是对于大表
更多Redis相关技术文章,请访问Redis入门教程栏目进行学习!
php redis 分页查询,redis如何解决分页查询相关推荐
- selectprovider 分页_修改EFOracleProvider——解决分页排序问题
其实前面说的这些,支持9i啊,支持数据类型啊,支持自增长啊,或者是上网搜索就能解决,或者并不需要很高的技术含量. 但是支持分页排序的问题,可是花了我不少时间(净时间2天以上). 我们知道,在oracl ...
- oracle锁表查询_专业解决 MySQL 查询速度慢与性能差
Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注 什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS: QueriesPerSe ...
- 加锁查询 FOR UPDATE 解决表格查询极慢的问题
Select...for update 语句是我们经常使用手工加锁语句.通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作.同时,在多版本一致读机制的支持下,select语 ...
- mybatis collection 子查询,嵌套查询,解决分页问题
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...
- springboot controller 分页查询_Spring Boot实战分页查询附近的人: Redis+GeoHash+Lua
您的支持是我不断创作巨大动力 CSDN博客地址(关注,点赞) 人工智能推荐 GitHub(Star,Fork,Watch) 前言 最近在做社交的业务,用户进入首页后需要查询附近的人: 项目状况:前期尝 ...
- 数据库分库分表和带来的唯一ID、分页查询问题的解决
数据库分库分表和带来的唯一ID.分页查询问题的解决 参考文章: (1)数据库分库分表和带来的唯一ID.分页查询问题的解决 (2)https://www.cnblogs.com/hanzhong/p/1 ...
- mysql的分页怎么不对_mysql一对多关联查询分页错误问题的解决方法
xml问价中查询数据中包含list,需要使用collection .... .... 这样的查询系统封装的通用分页查询是不对的,所以需要自己sql中加入分页解决 SELECT you.nick_nam ...
- mysql一对多关联查询分页_mysql一对多关联查询分页错误问题的解决方法
xml问价中查询数据中包含list,需要使用collection .... .... 这样的查询系统封装的通用分页查询是不对的,所以需要自己sql中加入分页解决 SELECT you.nick_nam ...
- redis 用scan 代替keys 解决百万数据模糊查询超时问题
redis 用scan 代替keys 解决百万数据模糊查询超时问题 参考文章: (1)redis 用scan 代替keys 解决百万数据模糊查询超时问题 (2)https://www.cnblogs. ...
最新文章
- (2016北京集训十)【xsy1529】小Q与进位制 - 分治FFT
- HLR、VLR及AUC三网元概述
- history linux 日志服务器_Linux日志分析
- http接口和webservice接口的区别
- multi-byte wide-char
- pytorch 查看中间变量的梯度
- CF1043E Train Hard, Win Easy
- SharePoint 2013开发入门探索(一)- 自定义列表
- 通过八叉树进行空间分割和搜索
- php环境模拟stphp_用php模拟做服务端侦听端口
- Yaf框架视频教程之入门篇【已完成】
- LoadRunner11录制APP脚本(2)
- Oracle函数--合并,替换,拼接,截取,查找
- mysql 30入门_mysql入门(三)
- 基于Java毕业设计/疫情展示平台源码+系统+mysql+lw文档+部署软件
- 硕士论文——页眉页脚设置
- 双非年薪40W,从字节裸辞了
- android studio 添加图片进入mipmap文件包
- 眼底病php 是什么病,眼底病_眼底病有哪些_眼底病怎么治疗_快速问医生
- TensorFlow2.0损失函数基本原理、调用及自定义
热门文章
- python语句分号_【判断题】Python程序中每条语句以分号结尾。
A. 正确
B. 错误
- 【转】微信小游戏开发总结
- Will的将来时态_40
- 计算机信息安全攻防大赛,2018年度信息安全攻防大赛圆满收官
- No module named ensurepip
- STM32掌机教程2,掌机的原理
- Codeforces765F. Souvenirs
- 华为 MA567x, 如何从电信系统切回华为系统
- M5A78L-M LX3 PLUS 触发不显
- ubuntu20下Cuckoo SandBox安装教程--大踩坑版(一)