redis 队列的使用

Reids是一个比较高级的开源key-value存储系统,采用ANSI C实现。其与memcached类似,但是支持持久化数据存储

入队操作

$redis = new Redis();
$redis->connect(‘127.0.0.1’,6379);

KaTeX parse error: Undefined control sequence: \[ at position 7: arr = \̲[̲ \['name' => …arr as $k => $v) {
t h i s − > r e d i s − > r p u s h ( " m y l i s t " , j s o n _ e n c o d e ( this->redis->rpush("mylist", json\_encode( this>redis>rpush("mylist",json_encode(v)); //加入队列值
}
echo ‘队列已经加入完成’;

出队操作

$count = t h i s − > r e d i s − > l S i z e ( ′ m y l i s t ′ ) ; / / 获 取 队 列 的 长 度 v a r _ d u m p ( this->redis->lSize('mylist'); //获取队列的长度 var\_dump( this>redis>lSize(mylist);//var_dump(count);
for ($i = 1; $i <= $count; $i++) {
$val = t h i s − > r e d i s − > L P O P ( ′ m y l i s t ′ ) ; v a r _ d u m p ( this->redis->LPOP('mylist'); var\_dump( this>redis>LPOP(mylist);var_dump(val);
echo “
”;
}

用redis的list当作队列可能存在的问题

1)redis崩溃的时候队列功能失效

2)如果入队端一直在塞数据,而出队端没有消费数据,或者是入队的频率大而多,出队端的消费频率慢会导致内存暴涨

3)Redis的队列也可以像rabbitmq那样即可以做消息的持久化,也可以不做消息的持久化。

当做持久话的时候,需要启动redis的dump数据的功能.暂时不建议开启持久化。

Redis其实只适合作为缓存,而不是数据库或是存储。它的持久化方式适用于救救急啥的,不太适合当作一个普通功能来用。应为dump时候,会影响性能,数据量小的时候还看不出来,当数据量达到百万级别,内存10g左右的时候,非常影响性能。

4)假如有多个消费者同时监听一个队列,其中一个出队了一个元素,另一个则获取不到该元素

5)Redis的队列应用场景是一对多或者一对一的关系,即有多个入队端,但是只有一个消费端(出队)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值