鍍金池/ 問答/HTML/ qrCode生成二維碼太密集

qrCode生成二維碼太密集

url參數(shù)太多,qrCode生成二維碼太密集,使用pako壓縮url還是太密,有什么其他的解決辦法

回答
編輯回答
九年囚

可以自己設(shè)計(jì)一個(gè)短鏈接生成功能,首先選擇一個(gè)非常短的域名,例如st18. org這種類似域名,然后在redis維護(hù)一個(gè)整數(shù)計(jì)數(shù)器(這里一定要持久化和做好高可用備份),整數(shù)計(jì)數(shù)器從0開始,每增加一個(gè)短鏈接就增加1,然后往一個(gè)redis的hash數(shù)據(jù)結(jié)構(gòu)里面存放一個(gè)計(jì)數(shù)器到原始鏈接的鍵值對(duì),短鏈接類似st18.org/1??赡軙?huì)遇到如下問題:
第一,計(jì)數(shù)器越來越大,達(dá)到幾百億,可以考慮使用幾種手段來縮短長度,使用redis的0到15號(hào)數(shù)據(jù)庫作為計(jì)數(shù)器前綴,正好是一個(gè)十六進(jìn)制,計(jì)數(shù)器也使用1024個(gè)計(jì)數(shù)器,使用52進(jìn)制(0-9a-zA-Z)編碼0到1023,對(duì)應(yīng)的hash數(shù)據(jù)結(jié)構(gòu)類似,最后在輸出時(shí)也使用52進(jìn)制即可。有條件的同學(xué)甚至可以使用redis cluster多實(shí)例增加一個(gè)前綴,到時(shí)位數(shù)一定要明確,比如一位52進(jìn)制數(shù),這些前綴的位數(shù)一定要明確,方便對(duì)短鏈接的hash進(jìn)行尋址。
第二,并發(fā)高是計(jì)數(shù)器出現(xiàn)問題,可以使用redis事務(wù)機(jī)制來避免。

2017年6月19日 01:30
編輯回答
莓森

嘗試一下短連接
生成二維碼的時(shí)候一般使用low級(jí)別的就可以了。

2017年7月31日 05:26