高并发系统

一些基本记录

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

你可能感兴趣的:(高并发系统)