分享

redis 统计点击量

 丶平上 2016-12-15
点击量统计有3个模块
1 帖子详细页面模块-点击量自增,并返回当前点击量
步骤比较简单,首先连接redis服务器,接下来发送一个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中获取需要显示的帖子点击数,两个点击量加起来即当前真实的点击量

// 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中的数据转存到mysql中,并清空redis
取出所有点击量的数据,更新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);

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多