奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

php語言

php語言redis隊列操作實例

時間:2025-02-23 15:50:01 php語言 我要投稿
  • 相關(guān)推薦

php語言redis隊列操作實例

  PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標記的CGI要高許多。下面是小編分享的php語言redis隊列操作實例,一起來看一下吧。

  Redis是一個比較高級的開源key-value存儲系統(tǒng),采用ANSI C實現(xiàn)。其與memcached類似,但是支持持久化數(shù)據(jù)存儲,同時value支持多種類型:字符串 (同memcached中的value),列表 ,集合 (Set),有序集合 (OrderSet)和Hash 。所有的值類型均支持原子操作,如列表中追加彈出元素,集合中插入移除元素等。Rdids的數(shù)據(jù)大部分位于內(nèi)存中,其讀寫效率非常高,其提供AOF(追加 式操作記錄文件)和DUMP(定期數(shù)據(jù)備份)兩種持久化方式。Redis支持自定義的VM(虛擬內(nèi)存)機制,當數(shù)據(jù)容量超過內(nèi)存時,可以將部分Value 存儲到文件中。同時Redis支持Master-Slave機制,可以進行數(shù)據(jù)復(fù)制。

  可以把Redis的list結(jié)構(gòu)當隊列來用

  從上面Redis的場景和作用來說,對于我們現(xiàn)在的開發(fā)活動,究竟能把Redis引入在那些場景,而不是把這么好的東東演變成“為了使用Redis,而Redis”的慘烈局面呢?當然,具體問題具體分析,這個真的很重要哈。

  緩存?分布式緩存? 隊列?分布式隊列?

  某些系統(tǒng)應(yīng)用(例如,電信、銀行和大型互聯(lián)網(wǎng)應(yīng)用等)都會使用到,當然,現(xiàn)在大行其道的memcache就是很好的證明;但從某一方面來 說,memcache是否能把兩張囊括其中,而且能做到更好(沒有實際的應(yīng)用過,所以只是拋出)。但從Redis身上,我就能感覺到,Redis,就能把 隊列和緩存兩張都囊括其中,而且都不會產(chǎn)生并發(fā)環(huán)境下的困擾,因為Redis中的操作都是原子操作來著。

  下面開始說說Redis中的隊列(分布式)。

  狀況場景

  現(xiàn)在的項目,都是部署在多個服務(wù)器,或者多個IP上,而且前臺經(jīng)由F5分發(fā),所以用戶的請求究竟落在那一臺的服務(wù)器上,是無法確定的。對于項目 中,有一秒殺設(shè)計,剛開始沒有考慮到這種部署,同時也是使用最容易處理的方式,直接給數(shù)據(jù)庫表鎖行記錄(Oracle上的)。可以說,對于不同的應(yīng)用部 署,而只有一臺數(shù)據(jù)庫服務(wù)器來說,很“輕松”的就解決了這個并發(fā)的問題。所以現(xiàn)在考慮一下,是不是挪到應(yīng)用上,避免數(shù)據(jù)庫服務(wù)器也摻雜到業(yè)務(wù)上。

  比如,現(xiàn)在有2臺應(yīng)用服務(wù)器,1臺數(shù)據(jù)庫服務(wù)器。想法是,把Redis部署在數(shù)據(jù)庫服務(wù)器上,兩臺服務(wù)器在操作并發(fā)緩存或者隊列時,先從Redis服務(wù)器上取得在兩臺應(yīng)用服務(wù)器的代理對象,再做入列出列的操作。

  入隊操作代碼

  <?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." ";

  }catch(Exception $e){

  echo $e->getMessage()." ";

  }

  }

  ?>

  出隊操作代碼

  <?php

  $redis = new Redis();

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

  while(True){

  try{

  echo $redis->LPOP('key1')." ";

  }catch(Exception $e){

  echo $e->getMessage()." ";

  }

  sleep(rand()%3);

  }?>

  入隊列操作文件 list_push.php

  <?php

  $redis = getRedisInstance();//從Redis服務(wù)器拿到redis實例

  $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 &

  出隊列操作 list_pop.php文件

  <?php

  $redis = getRedisInstance();//從Redis服務(wù)器拿到redis實例

  $redis->pconnect('Redis服務(wù)器IP', 6379);

  while(true) {

  try {

  var_export( $redis->blPop('list1', 10) );

  } catch(Exception $e) {

  //echo $e;

  }

  }

  用Python實現(xiàn):

  1.入隊列(write.py)

  #!/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.出隊列(read.py)

  #!/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)

  在操作時,注意,要操作的是同一個list對象。


【php語言redis隊列操作實例】相關(guān)文章:

如何使用php操作redis隊列實例09-15

php中使用redis隊列操作實例代碼05-16

PHP curl之操作實例09-08

13個php操作redis常用方法代碼例子08-30

用PHP基于Redis消息隊列實現(xiàn)發(fā)布微博的方法08-30

C語言面試實例操作08-14

實用的PHP語言實例代碼06-13

C語言循環(huán)隊列的表示與實例詳解08-21

PHP用redis簡單示例分享06-22

主站蜘蛛池模板: 抚州市| 紫阳县| 马关县| 易门县| 白朗县| 柘城县| 南城县| 沙田区| 贵定县| 蒙阴县| 昔阳县| 隆德县| 南宁市| 平阳县| 永昌县| 布拖县| 平塘县| 大同市| 大埔区| 新源县| 长岭县| 湖南省| 德令哈市| 抚远县| 临安市| 会东县| 莎车县| 左云县| 察哈| 呼伦贝尔市| 瓮安县| 昭觉县| 乌什县| 读书| 胶州市| 武城县| 崇义县| 镇平县| 沛县| 白山市| 时尚|