- 对于一个抽奖活动,以电话号码为校验入口,一个用户只能参加一次。预先录入的号码为“13311111111 0”,入口处先要判断用户号码的状态为0,则为第一次参加活动,参加后讲状态更新为1.为了避免一个号码同时点击多次造成判断入口的并发判断错误。这里使用redis的 “SETGET 13311111111 1” 。SETGET命令会反馈历史值。如果返回的是0,则该用户第一次参加活动,如果反馈1则该用户已经参加活动。截止提示用户已经参加过活动。SETGET在redis中是原子操作,可以将用户的判断和赋值作为一部操作完成。避免并发造成的判断错误。
- SETNX 命令也是原子操作,如果键值对已经存在返回0,如果不存在返回1.可以用于不预设参赛资格的秒杀或者抢购场景下。实现判断和赋值操作的原子性。
时间: 2024-10-07 11:24:39