久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

PHP如何使用Redis?(常見使用場景介紹)

PHP如何使用Redis?(常見使用場景介紹)

PHP使用Redis常見7種使用場景

Redis是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。

本篇文章,主要介紹利用PHP使用Redis,主要的應(yīng)用場景。

簡單字符串緩存實(shí)戰(zhàn)

$redis->connect('127.0.0.1', 6379);  $strCacheKey  = 'Test_bihu';  //SET 應(yīng)用  $arrCacheData = [      'name' => 'job',      'sex'  => '男',      'age'  => '30'  ];  $redis->set($strCacheKey, json_encode($arrCacheData));  $redis->expire($strCacheKey, 30);  # 設(shè)置30秒后過期  $json_data = $redis->get($strCacheKey);  $data = json_decode($json_data);  print_r($data->age); //輸出數(shù)據(jù)  //HSET 應(yīng)用  $arrWebSite = [      'google' => [          'google.com',          'google.com.hk'      ],  ];  $redis->hSet($strCacheKey, 'google', json_encode($arrWebSite['google']));  $json_data = $redis->hGet($strCacheKey, 'google');  $data = json_decode($json_data);  print_r($data); //輸出數(shù)據(jù)

簡單隊列實(shí)戰(zhàn)

$redis->connect('127.0.0.1', 6379); $strQueueName = 'Test_bihu_queue'; //進(jìn)隊列 $redis->rpush($strQueueName, json_encode(['uid' => 1,'name' => 'Job'])); $redis->rpush($strQueueName, json_encode(['uid' => 2,'name' => 'Tom'])); $redis->rpush($strQueueName, json_encode(['uid' => 3,'name' => 'John'])); echo "---- 進(jìn)隊列成功 ---- <br /><br />"; //查看隊列 $strCount = $redis->lrange($strQueueName, 0, -1); echo "當(dāng)前隊列數(shù)據(jù)為: <br />"; print_r($strCount); //出隊列 $redis->lpop($strQueueName); echo "<br /><br /> ---- 出隊列成功 ---- <br /><br />"; //查看隊列 $strCount = $redis->lrange($strQueueName, 0, -1); echo "當(dāng)前隊列數(shù)據(jù)為: <br />"; print_r($strCount);

簡單發(fā)布訂閱實(shí)戰(zhàn)

//以下是 pub.php 文件的內(nèi)容 cli下運(yùn)行 ini_set('default_socket_timeout', -1); $redis->connect('127.0.0.1', 6379); $strChannel = 'Test_bihu_channel'; //發(fā)布 $redis->publish($strChannel, "來自{$strChannel}頻道的推送"); echo "---- {$strChannel} ---- 頻道消息推送成功~ <br/>"; $redis->close(); //以下是 sub.php 文件內(nèi)容 cli下運(yùn)行 ini_set('default_socket_timeout', -1); $redis->connect('127.0.0.1', 6379); $strChannel = 'Test_bihu_channel'; //訂閱 echo "---- 訂閱{$strChannel}這個頻道,等待消息推送...----  <br/><br/>"; $redis->subscribe([$strChannel], 'callBackFun'); function callBackFun($redis, $channel, $msg) {  print_r([  'redis' => $redis,  'channel' => $channel,  'msg' => $msg  ]); }

簡單計數(shù)器實(shí)戰(zhàn)

$redis->connect('127.0.0.1', 6379); $strKey = 'Test_bihu_comments'; //設(shè)置初始值 $redis->set($strKey, 0); $redis->INCR($strKey);  //+1 $redis->INCR($strKey);  //+1 $redis->INCR($strKey);  //+1 $strNowCount = $redis->get($strKey); echo "---- 當(dāng)前數(shù)量為{$strNowCount}。 ---- ";

排行榜實(shí)戰(zhàn)

$redis->connect('127.0.0.1', 6379); $strKey = 'Test_bihu_score'; //存儲數(shù)據(jù) $redis->zadd($strKey, '50', json_encode(['name' => 'Tom'])); $redis->zadd($strKey, '70', json_encode(['name' => 'John'])); $redis->zadd($strKey, '90', json_encode(['name' => 'Jerry'])); $redis->zadd($strKey, '30', json_encode(['name' => 'Job'])); $redis->zadd($strKey, '100', json_encode(['name' => 'LiMing'])); $dataOne = $redis->ZREVRANGE($strKey, 0, -1, true); echo "---- {$strKey}由大到小的排序 ---- <br /><br />"; print_r($dataOne); $dataTwo = $redis->ZRANGE($strKey, 0, -1, true); echo "<br /><br />---- {$strKey}由小到大的排序 ---- <br /><br />"; print_r($dataTwo);

簡單字符串悲觀鎖實(shí)戰(zhàn)

解釋:悲觀鎖(Pessimistic Lock), 顧名思義,就是很悲觀。

每次去拿數(shù)據(jù)的時候都認(rèn)為別人會修改,所以每次在拿數(shù)據(jù)的時候都會上鎖。

場景:如果項目中使用了緩存且對緩存設(shè)置了超時時間。

當(dāng)并發(fā)量比較大的時候,如果沒有鎖機(jī)制,那么緩存過期的瞬間,

大量并發(fā)請求會穿透緩存直接查詢數(shù)據(jù)庫,造成雪崩效應(yīng)。

/**  * 獲取鎖  * @param  String  $key    鎖標(biāo)識  * @param  Int     $expire 鎖過期時間  * @return Boolean  */ public function lock($key = '', $expire = 5) {  $is_lock = $this->_redis->setnx($key, time()+$expire);  //不能獲取鎖  if(!$is_lock){  //判斷鎖是否過期  $lock_time = $this->_redis->get($key);  //鎖已過期,刪除鎖,重新獲取  if (time() > $lock_time) {  unlock($key);  $is_lock = $this->_redis->setnx($key, time() + $expire);  }  }  return $is_lock? true : false; } /**  * 釋放鎖  * @param  String  $key 鎖標(biāo)識  * @return Boolean  */ public function unlock($key = ''){  return $this->_redis->del($key); } // 定義鎖標(biāo)識 $key = 'Test_bihu_lock'; // 獲取鎖 $is_lock = lock($key, 10); if ($is_lock) {  echo 'get lock success<br>';  echo 'do sth..<br>';  sleep(5);  echo 'success<br>';  unlock($key); } else { //獲取鎖失敗  echo 'request too frequently<br>'; }

簡單事務(wù)的樂觀鎖實(shí)戰(zhàn)

解釋:樂觀鎖(Optimistic Lock), 顧名思義,就是很樂觀。

每次去拿數(shù)據(jù)的時候都認(rèn)為別人不會修改,所以不會上鎖。

watch命令會監(jiān)視給定的key,當(dāng)exec時候如果監(jiān)視的key從調(diào)用watch后發(fā)生過變化,則整個事務(wù)會失敗。

也可以調(diào)用watch多次監(jiān)視多個key。這樣就可以對指定的key加樂觀鎖了。

注意watch的key是對整個連接有效的,事務(wù)也一樣。

如果連接斷開,監(jiān)視和事務(wù)都會被自動清除。

當(dāng)然了exec,discard,unwatch命令都會清除連接中的所有監(jiān)視。

$strKey = 'Test_bihu_age'; $redis->set($strKey,10); $age = $redis->get($strKey); echo "---- Current Age:{$age} ---- <br/><br/>"; $redis->watch($strKey); // 開啟事務(wù) $redis->multi(); //在這個時候新開了一個新會話執(zhí)行 $redis->set($strKey,30);  //新會話 echo "---- Current Age:{$age} ---- <br/><br/>"; //30 $redis->set($strKey,20); $redis->exec(); $age = $redis->get($strKey); echo "---- Current Age:{$age} ---- <br/><br/>"; //30 //當(dāng)exec時候如果監(jiān)視的key從調(diào)用watch后發(fā)生過變化,則整個事務(wù)會失敗

相關(guān)教程推薦:《PHP教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
日韩中文欧美在线| 不卡一二三区| 亚洲欧美日韩国产综合精品二区| 91精品蜜臀一区二区三区在线| 另类专区亚洲| 久久黄色影院| 日韩视频一区| 久久国产66| 亚洲欧洲国产精品一区| 亚洲作爱视频| 午夜久久av | 国产精品一区二区三区美女| 国产精品一区二区99| 美女久久精品| 国产欧美一区二区三区精品酒店| 99精品视频精品精品视频| 精品91久久久久| 亚洲久久视频| 国产精品久久久亚洲一区| 国产+成+人+亚洲欧洲在线| 中文另类视频| 日韩在线卡一卡二| 国产精品一区二区三区av麻| 精品视频高潮| 久久国产中文字幕| 美女精品在线| 国产精品夜夜夜| 日韩不卡视频在线观看| 免费在线观看视频一区| 国产伦理久久久久久妇女| 91亚洲国产| 日韩精品一卡二卡三卡四卡无卡| 国产亚洲高清在线观看| 日韩精品不卡一区二区| 爽好多水快深点欧美视频| 日韩午夜视频在线| 国产一区二区三区探花| 羞羞答答国产精品www一本| 美女尤物国产一区| 99视频精品| 国产精品xxxav免费视频| 久久青草久久| 日韩av一区二区三区四区| av综合电影网站| 中文字幕一区二区三区四区久久| 麻豆一区二区三| 91成人网在线观看| 国产极品一区| 久久国产福利| 成人污污视频| 免费一级片91| 精品国产不卡一区二区| 亚洲免费影视| 91欧美日韩| 91成人精品在线| 亚洲欧美伊人| 精品亚洲成人| 亚洲精品进入| 在线视频观看日韩| 精品在线网站观看| 亚洲无线观看| 日韩欧美一区二区三区在线观看| 青青草国产精品亚洲专区无| 久久国产主播| 免费亚洲一区| 亚洲色图综合| 日本美女一区| 国产剧情在线观看一区| 欧美专区18| 久久久久美女| 精品国产午夜肉伦伦影院 | 亚洲日本三级| 视频二区不卡| 欧美激情日韩| 亚洲人成网77777色在线播放| 日本欧美不卡| 里番精品3d一二三区| 日韩午夜视频在线| 国产视频亚洲| 色偷偷色偷偷色偷偷在线视频| 欧美日韩a区| 日韩精品一二三区| 九九综合九九| 日韩影院二区| 高清一区二区三区av| 91成人精品观看| 亚洲三级毛片| 免费日韩av片| 午夜国产精品视频免费体验区| 人人草在线视频| 老司机免费视频一区二区| 亚洲日本欧美| 日韩在线播放一区二区| 亚洲国产综合在线看不卡| 久久久免费人体| 欧美日韩网址| 青草av.久久免费一区| 热久久免费视频| 狠狠色狠狠色综合日日tαg| 激情久久中文字幕| 久久免费国产| 性欧美xxxx免费岛国不卡电影| 深夜福利视频一区二区| 久久精品福利| 精品美女在线视频| 精品国产网站| 成人免费一区| 国产96在线亚洲| 国产成人久久精品一区二区三区| 国产精品黄色| 国产精品久av福利在线观看| 国产伦精品一区二区三区千人斩 | 91av一区| 欧美日韩亚洲三区| 国产美女久久| 美日韩一区二区三区| 嫩呦国产一区二区三区av| 国产精品一区高清| 国产精品17p| 精品亚洲成人| 日韩国产欧美一区二区| 成人精品天堂一区二区三区| 久久久精品五月天| 黄色不卡一区| 石原莉奈在线亚洲三区| 亚洲字幕久久| 久久国产婷婷国产香蕉| 国产精品亲子伦av一区二区三区| 国产亚洲一区二区三区啪| 国产精一区二区| 久久精品伊人| 欧美成人精品三级网站| 亚洲性色视频| 天堂成人国产精品一区| 亚洲综合中文| 国产欧美啪啪| 四虎8848精品成人免费网站| 亚洲成人不卡| 夜久久久久久| 日韩精品高清不卡| 国产日韩中文在线中文字幕| 国产精品v日韩精品v欧美精品网站 | 麻豆精品蜜桃视频网站| 美女视频黄久久| 黄色aa久久| 欧美日韩国产传媒| 免费人成在线不卡| 欧美一区网站| 里番精品3d一二三区| 日韩国产欧美一区二区| 欧美理论视频| 日韩中文字幕| 精品一区二区三区中文字幕| 在线天堂中文资源最新版| 欧美.日韩.国产.一区.二区| 免费人成黄页网站在线一区二区| 免费的成人av| 国产精成人品2018| 国产99久久| 日日夜夜免费精品| 国产一区日韩| 国产亚洲精品自拍| 国产精品麻豆成人av电影艾秋| 欧美国产美女| 视频一区二区三区在线| 美女国产一区二区三区| 亚洲韩日在线| 欧美日韩一区二区高清| 成人日韩在线观看| 日韩精品成人| 日韩一区二区三区免费播放| 国产精品毛片一区二区三区| 日韩av网站在线观看| 国产精品毛片久久| 一区二区三区四区日韩| 精品丝袜久久| 老鸭窝毛片一区二区三区| 久久精品亚洲一区二区| 影音先锋国产精品| 美日韩一区二区三区| 国产精品婷婷| 国产不卡av一区二区| 在线免费观看亚洲| 日韩免费av| 91成人在线网站| 免费观看久久av| 国产日韩欧美在线播放不卡| 久久视频国产| 国产精品亚洲产品| 日韩午夜电影| 精品一区av| 日韩精品一区二区三区中文在线 | 欧美黑人做爰爽爽爽| 99re国产精品| 精品一区视频| 日韩在线成人| 伊人影院久久| 麻豆视频一区二区| 亚洲深深色噜噜狠狠爱网站| 日韩欧美一区二区三区免费看|