Mysql Php 推送获取随机数据解决分页重复问题

这篇具有很好参考价值的文章主要介绍了Mysql Php 推送获取随机数据解决分页重复问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

或许你已经看过很多博主写的文章,要不就是抄袭,要不就是给你一个下面的语句,随机是随机了,但是多来两页,你会发现前面出现的数据在第三页甚至第二页就出现了

select * from table order by rand()

这是因为rand()机制的问题,他每次都会打乱数据给你,然后你去取的时候0-10,11-20都有可能是同一个数据,为了解决这个问题,我终于找到一种MD5加密算法,比如我是商城商品随机推荐

第一步:先把id加密生成一个新的key,然后再做key字符串截取的排序 ORDER BY substr(key,start,len)

SELECT
    *,
    md5(id) as key
FROM
    ims_cjdc_jfgoods
ORDER BY
    substr(key,3,6)
    LIMIT 0,10

我们第一步已经把id做了加密,生成了一个新的key,第二步要和前端进行联动了,因为单纯的sql是解决不了这个问题的,第二步就是把每个用户的第一次请求生成一个0~32之间的随机数

# 第一次请求的key,不要存缓存,返回给前端让他自己存起来
$keystart = I('key');
if(!$keystart) {
    $keystart = rand(0,32);
}

第三步,根据第二步生成的随机数形成固定的算法,把$keystart带入第一步的sql里面执行,直至用户离开页面为止。

目前我测试了几十万的数据,屡试不爽,原理就是每个用户的第一次请求都给他生成一个固定的算法返回给前端,前端在这个页面内把这个算法一直回传回来直至用户离开页面为止,待下次用户进来又给他一个新的算法重复使用即可

 文章来源地址https://www.toymoban.com/news/detail-464392.html

到了这里,关于Mysql Php 推送获取随机数据解决分页重复问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决MySQL中分页查询时多页有重复数据,实际只有一条数据的问题

    有一个离奇的BUG,在查询时,第一页跟第二页有一个共同的数据。有的数据却不显示。 后来发现是在SQL排序时没用主键排序。 解决:使用主键排序 以下是我准备的举例,可以自己试试。 分页查询公式:分页查询–他的公式为(伪代码): [NOT] LIMIT (curPage-1)*pageSize,pageSize 执行

    2024年02月16日
    浏览(36)
  • 整理SourceTree使用方法(拉取、提交、推送、获取、冲突解决、分支管理)

    收藏保存吧,忘记的时候打开来看看 丢弃:放弃未暂缓区的所有修改(工作区中的修改不会添加到版本控制,就是修改的东西不想提交,就直接丢弃) 移除:直接删除文件 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库 提交(commit):将暂存文件上传到本地

    2024年02月05日
    浏览(44)
  • Elasticsearch - 聚合获取原始数据并分页&排序&模糊查询

    ES版本: 7.6. 需要按照主机ID 进行告警时间的汇总,并且还得把主机相关的信息展示出来。 注: 所有的数据都存在索引中, 通过一个DSL查询展示 实际上就是将terms聚合的结果以列表形式分页展示。 bucket_sort中 from不是pageNum,如想实现pageNum效果,from=pageNum*size即可; terms聚合

    2024年02月05日
    浏览(44)
  • Vue使用WebSocket实现实时获取后端推送的数据。

    Vue可以使用WebSocket实现实时获取后端推送的数据。 1.在Vue项目中安装WebSocket库 可以使用npm或yarn安装WebSocket库: 2.创建WebSocket连接 在Vue组件中创建WebSocket连接,连接到后端WebSocket服务器,代码如下: 上面的代码中,使用WebSocket连接到后端WebSocket服务器,通过监听onmessage事件,

    2024年02月08日
    浏览(48)
  • pb:获取服务器时间、判断是否有重复数据

    /*----------------------------------------------------------------------- * 函数名称:datetime gf_getsysdate(string as_dbms) * 功能描述:取得服务器的的日期时间(DateTime)                       * 参数含义:as_dbms 所使用的数据库DBMS   * 返 回 值:datetime类型,系统日期 * 调用举例:ldt_today

    2024年02月06日
    浏览(45)
  • JAVA8 获取list集合中重复的元素和获取去重数据

    1.java8获取list集合中重复的元素 2.java8根据List对象属性获取重复数据和获取去重后数据 2.1获取重复数据 结果: 根据多个属性获取重复数据,还在摸索中,欢迎大家来指点!!!!! 2.2获取去重后数据 结果:

    2024年02月12日
    浏览(52)
  • 【Flink】FlinkCDC获取mysql数据时间类型差8小时时区解决方案

    1、背景: 在我们使用FlinkCDC采集mysql数据的时候,日期类型是我们很常见的类型,但是FlinkCDC读取出来会和数据库的日期时间不一致,情况如下 FlinkCDC获取的数据中create_time字段1694597238000转换为时间戳2023-09-13 17:27:18  而数据库中原始数据如下,并没有到下午5点,这就导致了

    2024年02月07日
    浏览(50)
  • MySQL 根据多字段查询重复数据 MySQL根据某一个或者多个字段查找重复数据

    在实际的数据库应用中,我们经常需要根据多个字段来查询重复的数据。MySQL 提供了一些方法来实现这个功能,让我们能够快速准确地找到和处理重复数据。本文将介绍如何使用 MySQL 来根据多字段查询重复数据,并提供相应的代码示例。 什么是重复数据? 重复数据指的是在

    2024年02月12日
    浏览(39)
  • SpringBoot环境MongoDB分页+去重+获取去重后的原始数据

    最近有个比较复杂的MongoDB查询需求, 要求1:获取最近订单表中的请求参数信息,并需要按照请求参数中的账号进行去重 要求2:数据量可能比较大,因此需要做分页查询 研究了大半天,终于搞出了解决方案,因此记录一下供有需要的同学参考。 感谢国家、感谢互联网、感觉

    2024年02月09日
    浏览(37)
  • 解决 php 连接mysql数据库时报错:Fatal error: Class ‘mysqli’ not found in问题【更新23.12.12】

    在使用php对mysql进行连接的过程中,出现了 Fatal error : Uncaught Error: Class \\\"mysqli\\\" not found in 的问题 这个错误通常表示您的PHP代码中缺少MySQL扩展或者没有启用MySQL扩展。 我们首先确认一下PHP环境中已经安装了MySQL扩展。检查一下自己的php路径下有没有php_mysqli.dll这个文件,如果有

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包