erlchina 发表于 2016-11-23 09:35:43

Redis 3.2.5 发布,超高性能 key

引用来自“eechen”的评论
文章阅读量统计,写的时候可以先写到Redis中,然后每隔一段时间后获取【Redis互斥锁】写入MySQL.  $redis->set('post_views_1024', $redis->get('post_views_1024')+1);
  if( (time()-600) > $redis->get('post_views_last_update_time_1024') ) {
  $key = 'lock'; //锁
  $random = md5( uniqid(getmypid().'_'.mt_rand().'_', true) ); //随机值(用来标记锁)
  $ttl = 10; //ttl即time to live,单位是秒.
  if( $redis->set($key, $random, ['nx', 'ex' => $ttl]) ) { //加锁(nx表示not exists,ex表示expire)
  //写入MySQL

  $mysqli->query('UPDATE posts SET views = '.$redis->get('post_views_1024').' WHERE>  if( $mysqli->affected_rows == 1 ) {
  $redis->set('post_views_last_update_time_1024', time());
  }
  //加入随机值判断是为了避免删除到其他操作的锁
  if($redis->get($key) == $random) {
  $redis->del($key);
  }
  }
  }
页: [1]
查看完整版本: Redis 3.2.5 发布,超高性能 key