这里, 我们不关心加密解密的难度. 我们更关心的是
1. 运算速度
2. 冲突概率
这里推荐google的hash算法, marmurhash. marmurhash算法是非加密hash函数....非加密表示marmurhash比md5, sha这样的函数有更高的性能.
hash冲突了怎么办?
虽然marmurhash发生冲突的概率很低, 但还是要考虑, 一旦发生冲突, 怎么办?如何规避调....我们根据短链接去db中查询,是否存在这样的记录
3. 如果不存在, 就进行存储, 如果存在,说明已经有相关的记录了. 取出长串, 在加上一个固定的字符串,比如bywind....进行marmurhash, 获得短链接地址
marmurhash(lurl + bywind)
4. 在对整个字符串进行第一步的操作. 如果这个字符串还是重复, 那就在拼接一个字符串.
5....在对长链接的md5加索引, 这样索引就会变得很小. 这样只需要根据常量的MD5去数据库里查重就可以了.
4. 数据量比较巨大的话, 后期还可以考虑分库分表.