場景
在生成二維碼,發邀請連接,動態說說的時候,猶豫連接過長導致二維碼像素點過密,文字不突出。這個時候想要把長連接改成短碼。
工具
- redis
- hashIds
環境
- java springboot
步驟
- 下載好redis之後啓動
- 編寫hashIds 的短碼生成規則,核心代碼如下
// hashids構造函數的第一個參數爲混淆 “鹽” 第二個值表示最小的長度 不代表固定長度
Hashids hashids = new Hashids("your salt", shortLen);
//利用redis的inc原子性的特徵製造自增序列
long increment = redis.incremnet('KEY')
String shortCode = hashids.encrypt(increment);
redis.set(shortCode,url)
...
利用redis保證短碼生成基礎數值是不重複的,使用hashIds讓自增序列的上一位數下一位數關聯打斷。比如6,7 hashIds之後可能是 xA,bU。