文档章节

利用MongoDb进行分页方案

奋斗到天明
 奋斗到天明
发布于 2015/08/27 18:17
字数 631
阅读 59
收藏 1
点赞 0
评论 0

MongoDb的一个应用方案,具体场景是,框架是 Play1.x后端+Delphi前端,查询是数据过多,所以有用缓存减小网络压力,前端利用类似瀑布流的技术拉取数据,后端一次查出数据,分页返回。

这里提出两个方案,具体如下: 

一、分析 

综合上次开会,在缓存方面有两种意见,即是否将sessionid作为计算缓存hashkey的条件之一。其实这两种意见可以将此次的服务端的缓存分为两种作用。 

第一种,只做数据的反向缓冲,有减小网络压力之用。将数据从数据库取出,分批取回客户端。这种情况就是用sessionid计算hashkey的情况。如果只做反向的缓冲,则不须考虑数据的时效性。因为用缓冲与不用缓冲的区别只是在于是否一次加载完成。

另一种,就是不计算sessionid。这时将起反向缓冲与数据缓存作用,同时减小网络与数据库的。多个用户的多个请求只要请求参数一致,即hashkey一致,则取同一缓存。 

二、方案 

在后端,采用mongoDB作为缓存,将第一次请求结果缓存下来。缓存的地方在play的Controller层中,利用反射取值,这样可减少代码量。在数据返回时,带有livetime,可让客户端知道数据是否过期。 针对分析中的两种情况,提出下面两种方案: 

 A、 针对缓冲

图片1

缓存策略: 使用 url + requestParam + sessionid + timestamp 做hashkey。根据具体需求,将数据分成N段。每次请求取最前一段的数据,取完后缓存删除此段,当数据超过livetime点之后MongoDB也会自动删除此hashkey的所有数据。   

B、 针对缓冲加缓存

图片2

缓存策略: 

1、使用 url + requestParam 做hashkey 建立一个列表,将这次查询结果加入列表前面中,并设置每个数据项的成活时间点livetime与有效保鲜时间点activetime。 

2、返回hashkey、livetime和nextpage。第二次查询时可以用三个参数拉取数据。如果nextpage为空表示已经没有数据。 

3、如果第二个用户过来,同样的hashkey,会读取相应列表中最后一项的数据,计算是否在其activetime时间点前,如果在,则返回hashkey、livetime、nextpage。如果没有则重复1。

© 著作权归作者所有

共有 人打赏支持
奋斗到天明
粉丝 18
博文 112
码字总数 82707
作品 0
昌平
程序员
MongoDB 使用Skip和limit分页

关于MongoDB 数据分页和排序 limit,skip用户的一些基础语句,介绍MongoDB 数据分页和排序实例方法。 使用Skip和limit可以如下做数据分页: Code:   page1 = db.things.find().limit(20)  ...

mysoftsky
2014/08/26
0
1
Docker使用supervisor启动MongoDB

Docker的学习中不断的进行完善、不断的学习,把一些原有的方法进行优化。 镜像下载地址: 旧方案地址:如有不成熟没有上传 新方案地址:https://github.com/aarongo/centos-mongodb-superviso...

aarongo
2014/11/26
0
0
55最佳实践系列:MongoDB最佳实践

@郑昀汇总 创建日期:2012/9 Application Design: 1)如果发现query没使用你预期的索引,请用hint强制使用指定索引 主站商品中心所使用的文档字段很多,各种索引建得也不少。在沙创排查慢查...

旁观者-郑昀
2013/02/08
0
1
MongoDB核心贡献者:不是MongoDB不行,而是你不懂!

近期MongoDB在Hack News上是频繁中枪。许多人更是声称恨上了MongoDB,David mytton就在他的博客中揭露了MongoDB许多现存问题。然而恨的人有之偏爱的也同样很多,作为回击:Russell Smith带来...

山海经
2014/07/27
0
0
一文读懂Spring Boot、微服务架构和大数据治理之间的故事

微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用...

纯洁微笑
05/10
0
0
waylau/mongodb-file-server

MongoDB File Server(基于 MongoDB 的文件服务器) MongoDB File Server is a file server system based on MongoDB. MongoDB File Server is committed to the storage of small files, su......

waylau
04/26
0
0
MongoDB 用户名密码登录

Mongodb enable authentication MongoDB 默认直接连接,无须身份验证,如果当前机器可以公网访问,且不注意Mongodb 端口(默认 27017)的开放状态,那么Mongodb就会产生安全风险,被利用此配...

kimoCHG
2017/01/07
0
0
一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用...

ityouknow
05/16
0
0
如何使用MongoDB+Springboot实现分布式ID

如何实现分布式id,一般会给出这几种方案 使用数据库自增Id 使用reids的incr命令 使用UUID Twitter的snowflake算法 利用zookeeper生成唯一ID MongoDB的ObjectId mongodb如何实现分布式ID Mo...

小贱是个程序员
06/05
0
0
mongodb 简单部署方案及实例

第一节 准备工作 一 安装mongodb 我这里选用rehl 5.6作为其运行载体。 1. 下载mongodb的linux版本(注意32位和64位的区别),下载地址:http://www.mongodb.org/downloads # wget http://fast...

猪猪
2012/04/12
0
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

expect(spawn) 自动化git提交和scp拷贝---centos(linux)

**在进行SCP文件拷贝中,往往需要进行用户密码的输入,即用户交互。若采用自动化脚本的方式进行,则可用以下方式: ** #!/usr/bin/expect #设置参数 set src [lindex $argv 0] set dest [lin...

helplove
2分钟前
0
0
用Build来构建对象的写法

如果一个类的属性过多,用构造器来构建对象很难写,因此我们时用Build方式来构建对象。写法大致如下。 import java.io.Serializable;import java.util.Date;public class Log impleme...

算法之名
4分钟前
0
0
利用 acme.sh 获取网站证书并配置https访问

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.(https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E) 主要步骤: 安装 acme.sh 生成证书 copy 证书到 nginx/ap...

haoyuehong
17分钟前
2
0
微擎框架内如何根据media_id获取到微信图片的路径

微擎的框架内,图片选择后,获取的是那个字符串是media_id,相当于你这张图片在微信的图片服务器里面的id 要求是:获取https://mmbiz.qpic.cn/mmbiz_jpg/…… 微信图片的路径 而微信并没有根据m...

老bia同学
21分钟前
1
0
Spring boot中日期的json格式化

Model 在model层中,类的日期属性上面添加如下注解: @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss") 参考 Jackson Date格式化教程...

亚林瓜子
23分钟前
2
0
Eclipse:Failed to load the JNI shared library

1.问题背景: 由于我之前使用jdk1.9学习,当使用Luke的时候发现jdk版本过高,需要向下配置jdk,就向朋友拷了一个安装包。重新配置路径后,便开始报错。 2.问题描述: Failed to load the JNI...

tinder_boy
25分钟前
0
0
少儿学习编程课程是否真的适合七八岁的低龄儿童[图]

少儿学习编程课程是否真的适合七八岁的低龄儿童[图]: 天下熙熙皆为利来,天下攘攘皆为利往。 这几年来,乐高教育机构在国内如同雨后春笋般出现,当然关闭/转手的也很多。从教师角度来看,部...

原创小博客
31分钟前
1
0
ES12-词项查询

1.词项查询介绍 全文查询将在执行之前分析查询字符串,但词项级别查询将按照存储在倒排索引中的词项进行精确操作。这些查询通常用于数字,日期和枚举等结构化数据,而不是全文本字段。 或者,...

贾峰uk
39分钟前
2
0
http状态码与ajax的状态值

ajax状态值 1.1 200 & OK:状态请求成功

litCabbage
42分钟前
1
0
iOS动画效果合集、飞吧企鹅游戏、换肤方案、画板、文字效果等源码

iOS精选源码 动画知识运用及常见动画效果收集 3D卡片拖拽卡片叠加卡片 iFIERO - FLYING PENGUIN 飞吧企鹅SpriteKit游戏(源码) Swift封装的空数据提醒界面EmptyView 沙盒文件浏览与分享调试控...

sunnyaigd
45分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部