业务需求:
我要解决课程秒杀,于是我用了redis五种数据类型的字符串类型,原因是因为有个自增,自减,适合秒杀。因为刚用PHP做秒杀,如果有更好的解决方式,请赶紧告诉我。
表结构1 表结构2
//增加
$redis=my_redis();
$redis->set('course_1',20);
$redis->set('user_1' ,json_encode([]));
//修改,选课,用户数量减少
$redis = my_redis();
if($redis->get('course_1') < 0){
$this->apiReturn(303,'课程已被抢完');
}
$redis->decr('course_1');
$data = $redis->get('user_1');//获取key [value]
$data = json_decode($data,JSON_UNESCAPED_UNICODE);
array_push($data,5);
$data = json_encode($data);
$redis->getset('user_1',$data);
//修改,用户取消选课,用户数量增加
$redis = my_redis();
$redis->incr('course_1');
$data = $redis->get('user_1');//获取key [value]
$data = json_decode($data,JSON_UNESCAPED_UNICODE);
$data = array_diff($data, [5]);
$data = json_encode($data);
$redis->getset('user_1',$data);
//查询所有信息
$redis = my_redis();
$people_num = $redis->get('course_1');
$data = $redis->get('user_1');
$data = json_decode($data,JSON_UNESCAPED_UNICODE);
$result = ['people_num'=>$people_num,'user'=>$data];
https://www.cnblogs.com/hbf66-88/p/11536232.html,另外推荐一篇jmeter写的很好的博客,我先用的就是这个。
网友评论