码迷,mamicode.com
首页 > 编程语言 > 详细

Guid全局唯一性算法

时间:2016-08-24 12:40:08      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

下面以Lua为例实现guid的生成,再对比nginx服务器的MD5算法进行比对效率

function
guid() local seed = { 0,1,2,3,4,5,6,7,8,9, a,b,c,d,e,f,g,h,i,j, k,l,m,n,o,p,q,r,s,t, u,v,w,x,y,z } local sid = "" for i=1, 32 do sid = sid .. seed[math.random(1,36)] end return string.format(%s-%s-%s-%s-%s, string.sub(sid, 1, 8), string.sub(sid, 9, 12), string.sub(sid, 13, 16), string.sub(sid, 17, 20), string.sub(sid, 21, 32) ) end local s = 0 local start = socket.gettime() while s < 100000 do s=s+1 --ngx.print(ngx.md5(math.random(1,36)) .. \r\n)
ngx.print(guid() .. ‘\r\n‘)
end ngx.print("execute time:" .. socket.gettime()-start .. \r\n) ngx.exit(200)

上面guid方法中seed读者可以自己自行扩展,比如再加入‘A-Z‘大写字符,guid我以32位的字符进行输出,

在实际测试过程中, 10万级的数据生成速度不考虑写文件的IO时间,远远低于0.4秒,而同等数量使用ngx.md5()时则足足多了一倍的时间;

再从唯一性上进行分析,10万级的生成串中,测试了10次,没有发现任何一次有重复的字符串,说明自配的guid算法足以满足实际生产使用;

Guid全局唯一性算法

标签:

原文地址:http://www.cnblogs.com/foundwant/p/5802083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!