短鏈的作用
1.鏈接變短
2.過濾垃圾鏈接
實(shí)現(xiàn)原理
key-value存儲(chǔ) 利用 自增長(zhǎng)的key作為 短鏈 (這樣能保證不重復(fù)且能有效利用)
如果量特別大 可以給redis設(shè)置失效時(shí)間 如 1天失效 且只要被訪問過則重新計(jì)時(shí) 這樣能保證熱門url不會(huì)過期 便于統(tǒng)計(jì)分析用戶行為
代碼
@HystrixCommand
String set(String longURL) {
StringshortURL=null
Redis.with(master) { Jedis jedis ->
shortURL= jedis.hget(l2s, longURL)
if(!shortURL) {
longn = jedis.hincrBy(l2s,'index',1) 生成短鏈的key
shortURL=long2str(n)
jedis.hset(s2l,shortURL, longURL)
jedis.hset(l2s, longURL,shortURL)
}
shortURL
}
}
static String long2str(longn) {
StringBuilder sb =newStringBuilder()
while(n >0) {
inti = n &0x3F
sb.append(chars[i])
n >>=6
}
sb.toString()
}