本文主要是介绍redis队列玩玩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->lpush('name',value);//左进
echo $res = $redis->rpop('name');//右出 一个一个出,出完就减少了
然后用if(empty($res)){die;//就表示已经抢购完了,不需要继续往下走,操作数据库了}
//不完整,下次再玩。
基于redis字符串string类型的简单缓存实现<?php
//简单字符串缓存$redis = new \Redis();
$redis->connect('127.0.0.1',6379);//缓存数据
$redis->set('cache_key',json_encode(['data'=>'这是缓存数据']));//获取缓存数据
$data = $redis->get('cache_key');
print_r(json_decode($data,true));
基于redis列表list类型的简单队列实现
<?php//利用列表list实现简单队列
$redis = new \Redis();
$redis->connect('localhost',6379);//进队列
$redis->rpush('queue_name',json_encode(['user_id'=>5]));
$redis->rpush('queue_name',json_encode(['user_id'=>6]));
$redis->rpush('queue_name',json_encode(['user_id'=>7]));echo "数据进队列完成\n";//可查看队列
$res = $redis->lrange('queue_name',0,1000);
print_r($res);//出队列
$redis->lpop('queue_name');//查看队列
$res = $redis->lrange('queue_name',0,1000);
print_r($res);
基于redis事务的乐观锁实现<?php
//实现乐观锁机制$redis = new \Redis();
$redis->connect('localhost',6379);//监视count的值
$redis->watch('count');//开启事务
$redis->multi();//操作count
$redis->set('count',time());//--------------------------------
//模拟并发下其他进程对count的操作
//redis-cli 执行 $redis->set('count','is simulate');
sleep(10);
//--------------------------------//提交事务
$res = $redis->exec();if($res){echo 'sucesss';return;
}else{echo 'fail';
}
基于redis的发布订阅实现
发布publish.php
<?php
//发布$redis = new \Redis();
$redis->connect('localhost',6379);$redis->publish('msg','来自xxx频道的消息推送');
echo '消息推送成功';$redis->close();
订阅subscribe.php
<?php
//订阅//ini_set('default_socket_timeout',-1);$redis = new \Redis();
$redis->pconnect('localhost',6379);//订阅
echo "订阅频道等待消息推送\n";$redis->subscribe(['msg'],'callfun'); //msg 是频道名//回调
function callfun($redis,$channel,$msg){print_r(['redis'=>$redis,'channel'=>$channel,'msg'=>$msg]);
}
这篇关于redis队列玩玩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!