點(diǎn)擊量統(tǒng)計(jì)有3個(gè)模塊 1 帖子詳細(xì)頁(yè)面模塊-點(diǎn)擊量自增,并返回當(dāng)前點(diǎn)擊量 步驟比較簡(jiǎn)單,首先連接redis服務(wù)器,接下來(lái)發(fā)送一個(gè)incr命令 使用thread:click:{$id}的形式來(lái)命名redis的鍵 // Connect redis server $redis = new redis(); $redis->connect('127.0.0.1', 6379); // Perform increase action $click = $redis->incr('thread:click:123'); 2 帖子列表頁(yè),返回一頁(yè)帖子所有的點(diǎn)擊量 // Connect redis server $redis = new redis(); $redis->connect('127.0.0.1', 6379); // Connect mysql server $mysql = new PDO("mysql:host=localhost;dbname=thread","root","",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $rs = $mysql -> query("select * from thread limit 30"); while($row = $rs -> fetch()){ $click = $redis->get('thread:click:'.$row['id']); echo $row['id']." "; echo $row['title']." "; echo $row['click'], "+", $click, "=", $row['click']+$click; echo "\n"; } 3 隔一段時(shí)間把redis中的數(shù)據(jù)轉(zhuǎn)存到mysql中,并清空redis // Connect redis server $redis = new redis(); $redis->connect('127.0.0.1', 6379); // Connect mysql server $mysql = new PDO("mysql:host=localhost;dbname=thread","root","",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); // Fetch all clicks $keys = $redis->keys('thread:click:*'); foreach ($keys as $key) { $id = substr($key,10); $click = $redis->get($key); $sql = "update thread SET `click` = `click` + $click where `id` = $id"; echo $sql,"\n"; $rs = $mysql -> query($sql); } // Delete clicks in redis $redis->delete($keys); |
|