电竞比分网-中国电竞赛事及体育赛事平台

分享

redis 統(tǒng)計點擊量

 丶平上 2016-12-15
點擊量統(tǒng)計有3個模塊
1 帖子詳細頁面模塊-點擊量自增,并返回當前點擊量
步驟比較簡單,首先連接redis服務器,接下來發(fā)送一個incr命令
使用thread:click:{$id}的形式來命名redis的鍵
// Connect redis server
$redis = new redis();
$redis->connect('127.0.0.1', 6379);

// Perform increase action
$click = $redis->incr('thread:click:123');

2 帖子列表頁,返回一頁帖子所有的點擊量
首先從mysql獲得需要顯示的帖子列表,然后從redis中獲取需要顯示的帖子點擊數(shù),兩個點擊量加起來即當前真實的點擊量

// 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 隔一段時間把redis中的數(shù)據(jù)轉(zhuǎn)存到mysql中,并清空redis
取出所有點擊量的數(shù)據(jù),更新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);

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多