業務場景
大型企業級應用中,分表操作是基本操作,使用多張表存儲同類型數據,但是對應的主鍵id必須保證統一性,不能重復。Oracle數據庫具有sequence設定,可以解決該問題,但是mysql數據庫並不具有類似的機制,那么如何解決?
解決方案
- 設置數值數據增加指定范圍的值
incr key
incrby key increment
incrbyfloat key increment
- 設置數值數據減少指定范圍的值
decr key
decrby key increment
string作為數值操作
- string在redis內部存儲默認就是一個字符串,當遇到增減類操作incr,decr時會轉成數值型進行計算
- redis所有的操作都是原子性的,采用單線程處理所有業務,命令是一個一個執行的,因此無需考慮並發帶來的數據影響.
- 注意: 按數值進行操作的數據,如果原始數據不能轉成數值,或超越了redis數值上限范圍,將報錯。9223372036854775807 (java中long型數據最大值,Long.MAX_VALUE)