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

php語言

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

時間:2024-09-15 23:12:03 php語言 我要投稿
  • 相關推薦

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

  對于不同的應用部 署,而只有一臺數據庫服務器來說,很“輕松”的就解決了這個并發的問題。所以現在考慮一下,是不是挪到應用上,避免數據庫服務器也摻雜到業務上。就跟隨百分網小編一起去了解下吧,想了解更多相關信息請持續關注我們應屆畢業生考試網!

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

  可以把Redis的list結構當隊列來用.

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

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

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

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

  狀況場景:

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

  比如,現在有2臺應用服務器,1臺數據庫服務器。想法是,把Redis部署在數據庫服務器上,兩臺服務器在操作并發緩存或者隊列時,先從Redis服務器上取得在兩臺應用服務器的代理對象,再做入列出列的操作。

  入隊操作代碼

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

  }

  }

  ?>

  出隊操作代碼

  <?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);

  }?>

  入隊列操作文件 list_push.php

  <?php

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

  $redis->connect('Redis服務器IP', 6379);

  while (true) {

  $redis->lPush('list1', 'A_'.date('Y-m-d H:i:s'));

  sleep(rand()%3);

  }

  ?>

  執行# php list_push.php &

  出隊列操作 list_pop.php文件

  <?php

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

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

  while(true) {

  try {

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

  } catch(Exception $e) {

  //echo $e;

  }

  }

  用Python實現:

  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隊列實例】相關文章:

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

用PHP基于Redis消息隊列實現發布微博的方法08-30

php實現Session存儲到Redis08-17

教你如何使用php的session07-13

php中Session存儲到Redis的方法09-23

如何啟用Apache的PHP-FPM多實例06-04

PHP socket的配置及實例10-16

php查詢mysql的實例09-09

PHP如何使用curl實現數據抓取09-27

如何使用PHP開發高效的web系統10-19

主站蜘蛛池模板: 凤凰县| 蓬安县| 卫辉市| 苏尼特左旗| 安国市| 黄冈市| 孟村| 南江县| 安新县| 淅川县| 抚顺县| 京山县| 凤庆县| 佛学| 四会市| 灵川县| 眉山市| 普定县| 榆中县| 武安市| 昌宁县| 卢龙县| 甘德县| 兴和县| 南阳市| 通州市| 庆安县| 蒙城县| 政和县| 射阳县| 盖州市| 华池县| 仁布县| 比如县| 三亚市| 鹿邑县| 淳安县| 西乌珠穆沁旗| 诏安县| 南靖县| 湟中县|