mysql消息队列推送到redis_redis实现消息队列教程

本文介绍如何利用Redis作为消息队列,每秒从队列中取出数据并存储到数据库,同时处理失败的情况。代码示例展示了如何连接Redis,获取并处理数据,以及使用PHP进行数据插入。此外,提供了定时脚本设置,确保每秒执行一次PHP文件,以保持实时同步。
摘要由CSDN通过智能技术生成

redis实现消息队列教程(ps:这个消息队列因为是每秒插入一次数据 对于实时性比较高的就不要用消息队列了 就是直接插入数据库)

第一步:读取redis队列 并且存入数据库 后再移除 代码如下

 
 

/**

* Created by PhpStorm.

* User: Administrator

* Date: 2016/10/18

* Time: 17:00

*/

file_put_contents('log.log', date("Y-m-d H:i:s") . " " . var_export('测试每秒请求', TRUE) . PHP_EOL, FILE_APPEND | LOCK_EX);

require_once 'queenchuli/common/mysql.php';

redisc('tutorial-list',99,'mobantestinfo');

/**

* @param $key redis key

* @param $percount 一次性操作多少数据

* @param $table 要插入的数据库

*/

function redisc($key,$percount,$table){

$redis = new Redis();

$redis->connect('127.0.0.1', 6379);

$redis->auth('zhiweiredis');

$arList = $redis->lrange($key, 0, $percount);

if(!empty($arList)){

foreach ($arList as $k=>$v){

$arList[$k]=json_decode($v,true);

}

for ($i = 0; $i < $percount; $i++) {

$redis->rPop($key);

}

$db = new mysql();

$isOk=inserts($arList, $table);

if ($isOk==1) {

} else {

//如果失败 就记录sql语句

file_put_contents('/data/web/mircoweb/wwwroot/Public/queenchuli/moban/log.log', date("Y-m-d H:i:s") . " " . var_export($isOk, TRUE) . PHP_EOL, FILE_APPEND | LOCK_EX);

}

}

}

/**

* 插入数组记录的操作

* @param array $array

* @param string $table

* @return boolean

*/

function inserts($array, $table)

{

$i = 0;

$arraynew=array();

foreach ($array as $k => $v) {

if ($i == 0) {

//运行一次就可以了

$keys = join(',', array_keys($v));

}

$val='('.join(',',$v).')';

$arraynew[]=$val;

$i++;

}

$values = join(',',$arraynew);

$sql = "insert {$table}({$keys}) VALUES {$values}";

$res = mysql_query($sql);

if ($res) {

return 1;

} else {

return $sql;

}

}

// some code

?>

第二步 shell脚本写定时器每秒触发 这个PHP文件

 
 

step=1 #间隔的秒数,不能大于60

for (( i = 0; i < 60; i=(i+step) )); do

$(php '/home/wwwroot/default/wordpress/cronb.php')

echo i

sleep $step

done

exit 0

保存为crontab.sh

然后sh运行它就是了 测试下 是不是有了 每次redis有新数据 都会插入数据库后 然后移除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值