redis 主从 如何限制用户签到一次

最近有个每日签到的活动 用户每天只能签到一次。 一开始考虑用 get set 但是万一并发情况下
刚刚set 为1 然后再去get 数据的时候 从库数据 延迟还没同步过来 还岂不是又可以签到一下
get set 完全满足不了 这个需求的原子性要求
后面找到  incrby 统一操作 主库


redis incrby
将key所储存的值加上增量increment。


如果key不存在,以0为key的初始值,然后执行INCRBY命令。


总体测试代码如下:

<?php
 
$redis=new redis();

$redis->connect('127.0.0.1','6379');
$user_id=1;
$redis_key=sprintf('redis_sign_user_%d',$user_id);
//如果已经签到过
if($redis->incrby($redis_key)>1){
	echo '您已经签到!';
}

?>


相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页