redis-限制用戶每天訪問不同接口的次數

  • 業務需求

限制每個用戶每天訪問不同接口的次數,如:每個承運商每天只能根據運單號查詢客戶信息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異常解決方案:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章