// 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);
联系客服