zoukankan      html  css  js  c++  java
  • 通过Redis、Memcache的 incr 原子操作防刷机制的使用差别

    我的版本如下:
    Redis:3.2.100
    Memcache:1.4.4

    最近在处理服务器压力测试的时候,想到一个方案,在一定时间段内限制用户访问次数。具体的实现就是通过redis的院子操作increment 来实现计数器计数(memcache是通过incr方法)
    这个可以作为很多防刷场景的策略,也可以用于确实业务上所需的限制比如1分钟内发验证码次数限制,防止刷验证码。

    具体在实现过程中遇到个细微的差异:

    • redis的increment操作,如果对应的key不存在,会自动创建并且初始化为0,然后执行incement操作,那么首次对某个key执行increment操作时会返回1(不需要自己先判断是否存在这个key之类的操作),官方文档有说明:->点我查看官方文档<-
      在这里插入图片描述

    • memcache的默认incr(key, by)操作,如果对应的key不存在,会报错。->点我查看官方wiki说明:<-
      在这里插入图片描述
      不过如果你使用的是net.spy.memcached.MemcachedClient这个java客户端来操作memcache的话,它提供了更多的选择,可以通过这些接口传默认值、超时时间进去,让它自动帮你初始化不存在的key:
      在这里插入图片描述

  • 相关阅读:
    ubuntu
    eclipse 链接 hadoop
    javaweb访问hdfs的一些错误
    eclipse
    ubuntu
    ubuntu
    ubuntu
    ubuntu 安装 mysql
    光源选择
    C#脱离Halcon编程开发环境使用方法
  • 原文地址:https://www.cnblogs.com/xiaocy66/p/10589260.html
Copyright © 2011-2022 走看看