最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP+Redis開發(fā)的書簽案例實戰(zhàn)詳解

 更新時間:2019年07月09日 11:47:58   作者:webbc  
這篇文章主要介紹了PHP+Redis開發(fā)的書簽案例,結(jié)合實例形式詳細分析了php結(jié)合redis開發(fā)書簽功能的具體步驟及相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了PHP+Redis開發(fā)的書簽案例。分享給大家供大家參考,具體如下:

redis是一個key-value存儲系統(tǒng)。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set 有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實現(xiàn)了master-slave(主從)同步。

場景

在項目開發(fā)過程中,相信大家都遇到過這樣的場景——一個書籍表,一個書籍標簽表,然后一本書可以有多個標簽,這個場景就和CSDN發(fā)布文章時的文章標簽差不多。

問題:如果我要查詢多個標簽共同的書籍,那么必須將表關(guān)聯(lián)查詢,這樣影響效率。我們可以使用redis來幫忙。

案例思路

在添加書籍的時候,需要添加書籍和標簽,將書籍保存到MySQL中,將標簽保存到redis的set集合中,將每個標簽看成一個set集合,然后每個標簽保存的是書籍的id信息。如果需要查詢多個標簽共同的書籍,只需要將多個集合進行交集操作。

結(jié)果圖

項目結(jié)構(gòu)圖

index.html文件

在這個頁面是用來添加書籍的。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  <title>Document</title>
</head>
<body>
  <form action="add.php" method="post">
    <p>請輸入書名:<input type="text" name="title" /></p>
    <p>請輸入標簽:<input type="text" name="tags" /></p>
    <p><input type="submit" value="提交" /></p>
  </form>
</body>
</html>

add.php文件

這個文件主要處理添加書籍。

首先生成生成自增長的id,用來給書籍的id使用,然后將標簽信息添加到redis中,最后使用pdo將書籍信息添加到數(shù)據(jù)庫中。

<?php
$redis = new Redis();
$redis->connect('localhost',6379);
//生成自增長的id
$bid = $redis->incr('bid');
//將標簽信息添加到redis中
$tags = explode(',',trim($_POST['tags'],','));
foreach($tags as $t){
  $redis->sAdd($t,$bid);
}
//使用pdo將書籍信息添加到數(shù)據(jù)庫中
$dsn = 'mysql:host=localhost;dbname=test';
$pdo = new PDO($dsn,'root','1234');
$pdo->query('set names utf8');
$sql = 'insert into book values(?,?)';
$st = $pdo->prepare($sql);
$line = $st->execute([$bid,$_POST['title']]);
if($line != 0){
  echo '添加書籍成功';
}

search.php文件

這個文件主要處理搜索界面,也就是上面效果圖的界面。首先創(chuàng)建一個redis對象并進行連接,然后獲取地址欄的標簽,然后將標簽轉(zhuǎn)換為數(shù)組,計算出用戶輸入標簽的數(shù)量,因為每個標簽都對應(yīng)redis中的集合,所以給這幾個集合取交集就可以了。

<?php
$redis = new Redis();
$redis->connect('localhost',6379);
$tags = explode(',',trim($_GET['tags'],','));
$len = count($tags);
if($len == 1){
  var_dump($redis->sMembers($tags[0]));
}else if($len == 2){
  var_dump($redis->sInter($tags[0],$tags[1]));
}else if($len == 3){
  var_dump($redis->sInter($tags[0],$tags[1],$tags[2]));
}

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+redis數(shù)據(jù)庫程序設(shè)計技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家PHP程序設(shè)計有所幫助。

相關(guān)文章

  • PHP入門教程之圖像處理技巧分析

    PHP入門教程之圖像處理技巧分析

    這篇文章主要介紹了PHP入門教程之圖像處理技巧,結(jié)合實例形式分析了圖形圖像的創(chuàng)建與顯示方法,并附帶了創(chuàng)建圖形驗證碼及縮略圖等應(yīng)用的具體示例,需要的朋友可以參考下
    2016-09-09
  • 防止用戶利用PHP代碼DOS造成用光網(wǎng)絡(luò)帶寬

    防止用戶利用PHP代碼DOS造成用光網(wǎng)絡(luò)帶寬

    一打開IIS,服務(wù)器的流出帶寬就用光-----就是說服務(wù)器不斷向別人發(fā)包,這個情況和受到DDOS攻擊是不同的,DDOS是不斷收到大量數(shù)據(jù)包.
    2011-03-03
  • php絕對路徑與相對路徑之間關(guān)系的的分析

    php絕對路徑與相對路徑之間關(guān)系的的分析

    php絕對路徑與相對路徑之間關(guān)系的的深入研究
    2010-03-03
  • php printf輸出格式使用說明

    php printf輸出格式使用說明

    printf的格式控制的完整格式,學(xué)習(xí)php的朋友可以參考下。
    2010-12-12
  • Discuz 6.0+ 批量注冊用戶名

    Discuz 6.0+ 批量注冊用戶名

    Discuz 6.0+ 批量注冊用戶名 此方法適合于手動采集用戶名,自動注冊用戶名,這樣做的好處是比較逼真!
    2009-09-09
  • PHP中json_encode、json_decode與serialize、unserialize的性能測試分析

    PHP中json_encode、json_decode與serialize、unserialize的性能測試分析

    今天偶然在想,如果用PHP寫一個類似BDB的基于文件的Key-Value小型數(shù)據(jù)庫用于存儲非結(jié)構(gòu)化的記錄型數(shù)據(jù),不知道效率會如何?
    2010-06-06
  • php中的觀察者模式

    php中的觀察者模式

    可以粗略的理解為,一個類(我們稱之為被觀察者),這個類繼承了一個被觀察者容器的借口
    2010-03-03
  • 淺談定義一個PHP函數(shù)

    淺談定義一個PHP函數(shù)

    在過去很長一段時間里,PHP都是開發(fā)web應(yīng)用的不二之選。現(xiàn)在7.x版本又填補了許多高級特性和現(xiàn)代化應(yīng)用的需求,并且提高了開發(fā)者的效率。這門語言正不斷的發(fā)生改變,找出這些變化,并停止過去的寫法,放棄你原來的習(xí)慣并自豪的使用這些新特性,讓你的代碼更易讀易懂。
    2021-05-05
  • php 生成餅圖 三維餅圖

    php 生成餅圖 三維餅圖

    php 生成餅圖 三維餅圖實現(xiàn)代碼,大家可以測試下。
    2009-09-09
  • PHP組合模式Composite Pattern優(yōu)點與實現(xiàn)過程

    PHP組合模式Composite Pattern優(yōu)點與實現(xiàn)過程

    這篇文章主要介紹了PHP組合模式Composite Pattern優(yōu)點與實現(xiàn),組合模式是一種結(jié)構(gòu)型模式,它允許你將對象組合成樹形結(jié)構(gòu)來表示“部分-整體”的層次關(guān)系。組合能讓客戶端以一致的方式處理個別對象和對象組合
    2023-03-03

最新評論

尼木县| 阳原县| 嫩江县| 手游| 扎囊县| 沙雅县| 都兰县| 镇原县| 昭平县| 桂东县| 石城县| 大宁县| 都兰县| 许昌市| 凌源市| 裕民县| 泸溪县| 双城市| 洱源县| 永平县| 邹城市| 长葛市| 尼勒克县| 泗阳县| 西青区| 济源市| 武清区| 永城市| 乌鲁木齐市| 汶川县| 五原县| 仪陇县| 栾城县| 新沂市| 遂宁市| 余姚市| 炎陵县| 黑水县| 洛川县| 杭州市| 长葛市|