分享

redis-限制用户每天访问不同接口的次数

 WindySky 2019-02-28

业务需求

限制每个用户每天访问不同接口的次数,如:每个承运商每天只能根据运单号查询客户信息50次,每个承运商每天只能根据运单号查询商品信息30次。

方案选择

Redis是一个key-value存储系统,存放的value类型相对较多包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型),同时redis具有时效性,所以此处采用redis的方式实现业务需求。

选用redis哪种数据结构方式

value为string类型:key用于标识不同接口不同承运商,value代表对应承运商每天访问的客户信息的次数,虽然可以实现业务需求,但接口标志一直重复存储,浪费了内存。

A接口(承运商1)—>N A接口(承运商2)—>N …

B接口(承运商1)—>N B接口(承运商2)—>N …

value为集合类型:用这种方式还不如用value为string类型的方式。

value为hash类型:key用于存放接口标识,value为一个Map集合用来存放不同承运商访问对应接口的次数。这种方式如果要修改对应的访问次数只需要通过(接口标志+承运商标志)就可以直接修改,同时接口标志不会重复存储,避免了内存的浪费。

A接口—>{承运商1—>N,承运商2—>N …}B接口—>{承运商1—>N,承运商2—>N …}

业务流程图(点击下载流程图)

通过springboot的RedisTemplate操作redis hash数据结构的方法:

https://blog.csdn.net/weixin_37490221/article/details/78135036

redis.clients.jedis.exceptions.JedisDataException: ERR hash value is not an integer异常解决方案:

https://blog.csdn.net/qq_31071543/article/details/85158305

--------------------- 

作者:localhost_rachel 

来源:CSDN 

原文:https://blog.csdn.net/qq_31071543/article/details/84752778 

版权声明:本文为博主原创文章,转载请附上博文链接! 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多