業(yè)務(wù)需求
限制每個(gè)用戶(hù)每天訪(fǎng)問(wèn)不同接口的次數,如:每個(gè)承運商每天只能根據運單號查詢(xún)客戶(hù)信息50次,每個(gè)承運商每天只能根據運單號查詢(xún)商品信息30次。
方案選擇
Redis是一個(gè)key-value存儲系統,存放的value類(lèi)型相對較多包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類(lèi)型),同時(shí)redis具有時(shí)效性,所以此處采用redis的方式實(shí)現業(yè)務(wù)需求。
選用redis哪種數據結構方式
value為string類(lèi)型:key用于標識不同接口不同承運商,value代表對應承運商每天訪(fǎng)問(wèn)的客戶(hù)信息的次數,雖然可以實(shí)現業(yè)務(wù)需求,但接口標志一直重復存儲,浪費了內存。
A接口(承運商1)—>N A接口(承運商2)—>N …
B接口(承運商1)—>N B接口(承運商2)—>N …
value為集合類(lèi)型:用這種方式還不如用value為string類(lèi)型的方式。
value為hash類(lèi)型:key用于存放接口標識,value為一個(gè)Map集合用來(lái)存放不同承運商訪(fǎng)問(wèn)對應接口的次數。這種方式如果要修改對應的訪(fǎng)問(wèn)次數只需要通過(guò)(接口標志+承運商標志)就可以直接修改,同時(shí)接口標志不會(huì )重復存儲,避免了內存的浪費。
A接口—>{承運商1—>N,承運商2—>N …}B接口—>{承運商1—>N,承運商2—>N …}
業(yè)務(wù)流程圖(點(diǎn)擊下載流程圖)
通過(guò)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
來(lái)源:CSDN
原文:https://blog.csdn.net/qq_31071543/article/details/84752778
版權聲明:本文為博主原創(chuàng )文章,轉載請附上博文鏈接!
聯(lián)系客服