一、需求
為各個幣種,設定N個金額區間對應的手續費。並根據金額取到對應的區間費率
二、設計
- 資料結構
|--zset:key:幣種編號--------ZSET-|
| value score |
| JSON 100 |
| JSON 200 |
---------------------------------
複製程式碼
- score是金額區間的起始金額
- 要查詢某個區間,通過金額查詢出大於分值的value,並取出第一個分值的value,即為要查詢的區間
三、涉及的命令
- 查詢所有資料
zrange exchange:rate:USD 0 -1
複製程式碼
- 獲取某個分值範圍的value,並倒敘排序,取出第一個value
zrevrangebyscore exchange:rate:USD (342 0 limit 0 1
複製程式碼
- 事務、通道
# 通道,批量處理的資料,事務中任意命令執行失敗,其餘的命令依然被執行。
MULTI
EXEC
# 事務,監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麼事務將被打斷。
WATCH key [key ...]
複製程式碼
- 通道並不能保證併發安全,事務並不能回滾
- redis沒有回滾機制
四、注意點
- 一次儲存的資料量大,所以開啟了通道
- 如果有併發可能,需要開啟watch,打斷後重新操作,相當於CAS
- 使用的連線方式不同,jedis或者template,命令對應的方法名不一樣
- zset其他命令,基本能根據分值各種查詢,求交併集
五、其他應用
- 點贊
- 關注、交併集合
- session