• 业务需求

限制每个用户每天访问不同接口的次数,如:每个承运商每天只能根据运单号查询客户信息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 …}

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

通过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异常解决方案:

相关文章:

  • 2022-12-23
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-10
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-26
  • 2022-01-07
  • 2022-02-26
相关资源
相似解决方案