一些基本记录
- 数据库层面用 for update 或者 ...where xxx-1>=0 可控制不超发
- 令牌桶,放于redis之类中,拿到令牌的才能下一步操作数据库等
- 防止多次请求:
用户层面 防止多次点击刷新,客户端做一定限制。
利用redis : key的有效期(EX) 和 当键不存在时才设置键(NX)机制 限制频率
如: set key value EX 5 NX
代表 如果有这个value(比如userID)则插入失败, 否则插入,该value有效期5s
注意:EX NX在java中写的时候不要分开。 可能有问题,避免永不过期。 性能不好
stringRedisTemplate中有execute(new RedisCallback.....) 可执行更详细的命令