业务需求 限制每个用户每天访问不同接口的次数,如:每个承运商每天只能根据运单号查询客户信息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 版权声明:本文为博主原创文章,转载请附上博文链接! |
|
来自: WindySky > 《redis应用场景》