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) {
this?>redis?>rpush("mylist",json_encode(this->redis->rpush("mylist", json\_encode(this?>redis?>rpush("mylist",json_encode(v)); //加入隊列值
}
echo ‘隊列已經加入完成’;
出隊操作
$count = this?>redis?>lSize(′mylist′);//獲取隊列的長度var_dump(this->redis->lSize('mylist'); //獲取隊列的長度 var\_dump(this?>redis?>lSize(′mylist′);//獲取隊列的長度var_dump(count);
for ($i = 1; $i <= $count; $i++) {
$val = this?>redis?>LPOP(′mylist′);var_dump(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的隊列應用場景是一對多或者一對一的關系,即有多個入隊端,但是只有一個消費端(出隊)
總結
以上是生活随笔為你收集整理的redis 队列的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魅蓝x android,魅蓝X后盖怎么打
- 下一篇: 数控圈Fuanc三菱M70M80螺补自动