激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - redis 隊(duì)列操作的例子(php)

redis 隊(duì)列操作的例子(php)

2019-12-29 17:23PHP教程網(wǎng) PHP教程

Reids是一個(gè)比較高級(jí)的開(kāi)源key-value存儲(chǔ)系統(tǒng),采用ANSI C實(shí)現(xiàn)。其與memcached類似,但是支持持久化數(shù)據(jù)存儲(chǔ)

入隊(duì)操作 

復(fù)制代碼代碼如下:

<?php 
$redis = new Redis(); 
$redis->connect('127.0.0.1',6379); 
while(True){ 
try{ 
$value = 'value_'.date('Y-m-d H:i:s'); 
$redis->LPUSH('key1',$value); 
sleep(rand()%3); 
echo $value."\n"; 
}catch(Exception $e){ 
echo $e->getMessage()."\n"; 


?> 


出隊(duì)操作 

復(fù)制代碼代碼如下:

<?php 
$redis = new Redis(); 
$redis->pconnect('127.0.0.1',6379); 
while(True){ 
try{ 
echo $redis->LPOP('key1')."\n"; 
}catch(Exception $e){ 
echo $e->getMessage()."\n"; 

sleep(rand()%3); 
}?> 


如何使用Redis 做隊(duì)列操作 
Reids是一個(gè)比較高級(jí)的開(kāi)源key-value存儲(chǔ)系統(tǒng),采用ANSI C實(shí)現(xiàn)。其與memcached類似,但是支持持久化數(shù)據(jù)存儲(chǔ),同時(shí)value支持多種類型:字符串 (同memcached中的value),列表 ,集合 (Set),有序集合 (OrderSet)和Hash 。所有的值類型均支持原子操作,如列表中追加彈出元素,集合中插入移除元素等。Rdids的數(shù)據(jù)大部分位于內(nèi)存中,其讀寫(xiě)效率非常高,其提供AOF(追加 式操作記錄文件)和DUMP(定期數(shù)據(jù)備份)兩種持久化方式。Redis支持自定義的VM(虛擬內(nèi)存)機(jī)制,當(dāng)數(shù)據(jù)容量超過(guò)內(nèi)存時(shí),可以將部分Value 存儲(chǔ)到文件中。同時(shí)Redis支持Master-Slave機(jī)制,可以進(jìn)行數(shù)據(jù)復(fù)制。 
可以把Redis的list結(jié)構(gòu)當(dāng)隊(duì)列來(lái)用. 
從上面Redis的場(chǎng)景和作用來(lái)說(shuō),對(duì)于我們現(xiàn)在的開(kāi)發(fā)活動(dòng),究竟能把Redis引入在那些場(chǎng)景,而不是把這么好的東東演變成“為了使用Redis,而Redis”的慘烈局面呢?當(dāng)然,具體問(wèn)題具體分析,這個(gè)真的很重要哈。 
緩存?分布式緩存? 
隊(duì)列?分布式隊(duì)列? 
某些系統(tǒng)應(yīng)用(例如,電信、銀行和大型互聯(lián)網(wǎng)應(yīng)用等)都會(huì)使用到,當(dāng)然,現(xiàn)在大行其道的memcache就是很好的證明;但從某一方面來(lái)說(shuō),memcache是否能把兩張囊括其中,而且能做到更好(沒(méi)有實(shí)際的應(yīng)用過(guò),所以只是拋出)。但從Redis身上,我就能感覺(jué)到,Redis,就能把隊(duì)列和緩存兩張都囊括其中,而且都不會(huì)產(chǎn)生并發(fā)環(huán)境下的困擾,因?yàn)镽edis中的操作都是原子操作來(lái)著。 
至于評(píng)論兩者的孰好孰壞就免了,存在就是理由,選擇適合的就是最好的。 
下面開(kāi)始玩玩Redis中的隊(duì)列(分布式)設(shè)計(jì)YY吧,請(qǐng)大蝦們多多指點(diǎn)。 
狀況場(chǎng)景: 
現(xiàn)在的項(xiàng)目,都是部署在多個(gè)服務(wù)器,或者多個(gè)IP上,而且前臺(tái)經(jīng)由F5分發(fā),所以用戶的請(qǐng)求究竟落在那一臺(tái)的服務(wù)器上,是無(wú)法確定的。對(duì)于項(xiàng)目中,有一秒殺設(shè)計(jì),剛開(kāi)始沒(méi)有考慮到這種部署,同時(shí)也是使用最容易處理的方式,直接給數(shù)據(jù)庫(kù)表鎖行記錄(Oracle上的)。可以說(shuō),對(duì)于不同的應(yīng)用部署,而只有一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器來(lái)說(shuō),很“輕松”的就解決了這個(gè)并發(fā)的問(wèn)題。所以現(xiàn)在考慮一下,是不是挪到應(yīng)用上,避免數(shù)據(jù)庫(kù)服務(wù)器也摻雜到業(yè)務(wù)上。 
比如,現(xiàn)在有2臺(tái)應(yīng)用服務(wù)器,1臺(tái)數(shù)據(jù)庫(kù)服務(wù)器。想法是,把Redis部署在數(shù)據(jù)庫(kù)服務(wù)器上,兩臺(tái)服務(wù)器在操作并發(fā)緩存或者隊(duì)列時(shí),先從Redis服務(wù)器上,取得在兩臺(tái)應(yīng)用服務(wù)器的代理對(duì)象,再做入列出列的操作。 
看代碼實(shí)現(xiàn)(PHP) 
入隊(duì)列操作文件 list_push.php 

復(fù)制代碼代碼如下:

<?php 
$redis = getRedisInstance();//從Redis服務(wù)器拿到redis實(shí)例 
$redis->connect('Redis服務(wù)器IP', 6379); 
while (true) { 
$redis->lPush('list1', 'A_'.date('Y-m-d H:i:s')); 
sleep(rand()%3); 

?> 


執(zhí)行# php list_push.php & 
出隊(duì)列操作 list_pop.php文件 

復(fù)制代碼代碼如下:

<?php 
$redis = getRedisInstance();//從Redis服務(wù)器拿到redis實(shí)例 
$redis->pconnect('Redis服務(wù)器IP', 6379); 
while(true) { 
try { 
var_export( $redis->blPop('list1', 10) ); 
} catch(Exception $e) { 
//echo $e; 


實(shí)現(xiàn)方法(Python) 
1.入隊(duì)列(write.py) 

復(fù)制代碼代碼如下:

#!/usr/bin/env python 
import time 
from redis import Redis 
redis = Redis(host='127.0.0.1', port=6379) 
while True: 
now = time.strftime("%Y/%m/%d %H:%M:%S") 
redis.lpush('test_queue', now) 
time.sleep(1) 


2.出隊(duì)列(read.py) 

復(fù)制代碼代碼如下:

#!/usr/bin/env python 
import sys 
from redis import Redis 
redis = Redis(host='127.0.0.1', port=6379) 
while True: 
res = redis.rpop('test_queue') 
if res == None: 
pass 
else: 
print str(res) 


在操作時(shí),注意,要操作的是同一個(gè)list對(duì)象。 
呵呵,現(xiàn)在的主要思路就差不多就是如此,不過(guò)真實(shí)場(chǎng)景中,會(huì)有出入。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色阁阁69婷婷 | 91快色视频 | 色人久久 | 性欧美在线视频 | 国产成人在线观看免费网站 | 成人午夜一区二区 | 免费视频aaa | 国产精品免费观看视频 | 艹男人的日日夜夜 | 综合国产在线 | 亚洲免费视 | 欧美中文字幕一区二区 | 国产一级淫片在线观看 | 精品一区二区久久久久久按摩 | 久久久久久久久久91 | 亚洲第一成网站 | 欧美日韩在线中文字幕 | 国产精品亚洲综合一区二区三区 | 色妇视频 | 黄在线免费看 | 中文字幕亚洲欧美 | 九九热视频免费观看 | 日韩精品中文字幕在线播放 | 小情侣嗯啊哦视频www | av在线在线| 免费a视频在线观看 | 免费一级毛片在线播放视频老 | 久色精品视频 | 国产第一页精品 | 久久久久久亚洲综合影院红桃 | 免费一级毛片在线播放不收费 | 九九热在线视频观看 | 欧美一级黄视频 | 亚洲天堂岛国片 | 亚洲天堂ww | jizzzxxxxhd | 成年性羞羞视频免费观看 | 香蕉视频网站在线观看 | 亚洲国产精品久久久久久久久久久 | 高清av免费| 亚洲精品aⅴ中文字幕乱码 中文字幕欧美在线 |