生成唯一客戶編碼
需求:1.id生成有一定規則,可識別
2.全域性保持唯一,支援分布式
思路:1.年月日+每日自增數
2.每天23:59:59秒把自增數清0
優勢:1.通過年月日可以看出使用者註冊時間
2.通過自增數可以看出每日註冊量
使用redis原因:
redis本身單執行緒,不會出現併發問題
redis自身有過期策略
使用redisatomiclong 自增
主要**如下:
//通過key獲取自增並設定過期時間
public long generateid(string key,date date)
//組裝符合自己規則的id並設定過期時間
/*** @param key redis中的key值
* @param prefix 最後編碼的字首
* @param ha***pire redis是否使用過期時間生成自增id
* @param minlength redis生成的自增id的最小長度,如果小於這個長度前面補0
* @return
*/private string generatecode(string key,string prefix,boolean ha***pire,integer minlength)
id = redisservice.generateid(key,date);
if(id != null)
} catch (exception e)
return baseidgenerator.generatestringkey();
}//設定格式
生成全域性唯一ID
a庫 b庫 c庫支援同時寫入 a庫初始值為1,自增為3,獲取的值一次是1 4 7 b庫初始值為2,自增為3,獲取的值一次是2 5 8 c庫初始值為3,自增為3,獲取的值一次是6 6 9 獲取id時可從三庫輪詢獲取 此方法使用資料庫原有的功能,所以相對簡單 能夠保證唯一性 能夠保證遞增性 id 之間的...
SnowFlake 生成全域性唯一id
public class snowflakeutil 外部呼叫獲取snowflakeutil的例項物件,確保不可變 return public static snowflakeutil get 初始化構造,無參構造有參函式,預設節點都是0 public snowflakeutil 設定機器節點和資料...
(備忘)c 中生成全域性唯一id
c 在要生成唯一標示的id,不用自己去設計演算法,直接用boost中的boost uuids random generator 隨機生成器即可。生成隨機數 guid 即globally unique identifier 全球唯一識別符號 也稱作 uuid universally unique id...