新浪微博和twitter 等系统都有一窜数字ID来标示一个唯一的用户,这篇文章就是记录如何实现这种唯一数字ID
原理:使用MYSQL 自增ID 拼接任意字符..然后使用进制转换打乱规则
一般来说实现唯一性可以使用uniqid 或者time之类的方式生成,但是考虑到多台系统,也就是分布式系统。这种方式就不准确了。
实现:
新建一个数据库:
CREATE TABLE `user_number_id` ( `id` bigint(20) unsigned NOT NULL auto_increment, `stub` char(1) NOT NULL default '', PRIMARY KEY (`id`), UNIQUE KEY `stub` (`stub`) ) ENGINE=MyISAM
使用replace into 来取得生成的ID
REPLACE INTO Tickets64 (stub) VALUES ('a'); SELECT LAST_INSERT_ID() as number_id;
取得number_id后生成十位数字ID
function auID($autoID) { $autoID = $autoID; $autoCharacter = array("1","2","3","