首页 > 数据库 >利用MYSQL+redis模拟消息队列

利用MYSQL+redis模拟消息队列

时间:2024-02-01 12:55:20浏览次数:27  
标签:function val 队列 redis key MYSQL model data id

1、插入数据库,获取自动编号,作为redis键名:

function tianjia()
    {
        $model = model(MqModel::class);
        $data = ['rs' => 1];
        $model->insert($data);              //插入
        $id = $model->getInsertID();
        pp($id);
        $key = 'mq_' . $id;
        cache()->save($key, $id, 86400);
    }

2、读取redis值,插入数据库

function add()
    {
        $model = model(MqModel::class);
        $m_val = model(ValModel::class);
        $rs = $model->getdata();
        $nm = $rs['id'];

        while ($nm > 0) {
            $key = 'mq_' . $nm;
            $val = cache()->get($key);

            if ($val) {
                $data = ['val' => $val];
                $r = $m_val->insert($data);

                if ($r) {
                    cache()->delete($key);
                }
            }
            $nm--;
        }
    }

 

前端:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document Title</title>
    <script src="./static/js/jquery.min.js"></script>
</head>

<body>
    <button class="dianji">点击</button>
</body>
<script>
    $.ajaxSettings.async = false;
    $('.dianji').click(function() {
        var url = "/tj";
        for (i = 1; i <= 5000; i++) {
            $.get(url, function(data) {
                console.log(data);
            })
        }
    })
</script>

</html>

监控

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document Title</title>
    <script src="./static/js/jquery.min.js"></script>
</head>

<body>
    <button class="dianji">点击</button>
</body>
<script>
    function listen() {
        $.ajaxSettings.async = false;
        var url = "/mq/add";
        $.get(url, function(data) {
            setTimeout(() => {
                listen();
            }, 200);

        }).fail(function() {
            setTimeout(() => {
                listen();
            }, 200);
        })
    }

    listen();
</script>

</html>

 

翻译

搜索

复制

标签:function,val,队列,redis,key,MYSQL,model,data,id
From: https://www.cnblogs.com/haokan/p/18000982

相关文章

  • Linux 安装 Mariadb(MySQL)
    使用如下命令查询当前linux发行版的信息:lsb_release-a接着安装Mariadb,命令:aptinstallmariadb-servermariadb-client安装 Mariadb之后依旧是使用mysql命令,它是mysql的分支而已设置root密码,执行:sudomysql_secure_installation然后提示Setrootpassword?[Y/n],输入Y......
  • Flink CDC引起的Mysql元数据锁
    记一次FlinkCDC引起的Mysql元数据锁事故,总结经验教训。后续在编写FlinkCDC任务时,要处理好异常,避免产生长时间的元数据锁。同时出现生产问题时要及时排查,不能抱有侥幸心理。1、事件经过某天上午,收到系统的告警信息,告警提示:同步Mysql的某张表数据到Elasticsearch异常,提示连不......
  • 虹科分享 | Redis与MySQL协同升级企业缓存
    传统的MySQL数据库在处理大规模应用时已经到了瓶颈,RedisEnterprise怎样助力突破这一瓶颈?RedisEnterprise与MYSQL共同用作企业级缓存或副本数据库,会产生什么样的火花?二者联合的解决方案,如何加速应用程序,提升效率,实现可拓展性?使用RedisEnterprise与MYSQL共同用作企业级缓存或副......
  • java直连mysql操作数据
    连接器importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;/***@author:chenKeFeng*@date:2024/1/3010:21*/publicclassMySQLConnector{p......
  • 面试官:Mysql千万级大表如何进行深度分页优化?
    背景假如有一张千万级的订单表,这张表没有采用分区分表,也没有使用ES等技术,分页查询进行到一定深度分页之后(比如1000万行后)查询比较缓慢,我们该如何进行优化?数据准备订单表结构如下:CREATETABLE`t_order`(`id`BIGINT(20)UNSIGNEDNOTNULLAUTO_INCREMENTCOMMENT......
  • Hive数据线下导入Mysql
    1.背景     最近在处理一个数据量级在1亿左右的数据,没办法mysql不好处理,只能把数据放到大数据集群进行处理,处理好后再把这亿级数据导入本地Mysql。2.实践(1)把需要处理的数据手动传到集群,上传的数据只有一万条左右,经过笛卡尔积以及各种运算后,结果数据条数有一亿左右,文件大小......
  • python的十大数据结构之堆队列heapq(heap queue)
    heapqueque(堆队列),是一个完全二叉树,并且满足一个条件:每个节点(叶节点除外)的值都大于等于(或小于等于)它的子节点。提供了构建小顶堆的方法和一些小顶堆的基本操作方法(如入堆、出堆等),可以用于实现堆排序算法。创建堆的两种方法:importheapqlists=[3,10,20,52,2,83,52......
  • MySQL 期末总结
    MYSQL一、对表结构进行操作1.主键1)添加主键--1.主键/* 方式一:创建表的时候在字段后面+primarykey 方式二:写完字段之后在指定主键,创建标的字段下面 [constraint<约束名>]primarykey*/usemydb1;createtableemp1( eidint, enamevarchar(20), d......
  • seatunnel-2.3.3测试excel入库mysql
    1.背景客户需要excel导入功能,同时支持导入多种数据源,尝试用seatunnel数据集成工具来实现。2.步骤2.1配置文件./config/v2.excel2mysql.configenv{#YoucansetSeaTunnelenvironmentconfigurationhereexecution.parallelism=1job.mode="BATCH"}source......
  • 数据库MySQL8.0.29安装与备份||了解和掌握MySQL的安装和简单使用和备份数据
    内容:了解和掌握MySQL的安装和简单使用:(1) 了解安装MySQL的软硬件环境和安装方法;(2) 熟悉MySQL的相关基本使用;(3) 熟悉MySQL的构成和相关工具;(4) 通过MySQL的使用来理解数据库系统的基本概念。要求:1. 在微机上安装MySQL数据库系统,为后续实验搭建实验环境,提供前期准备;2. 完成实......