以前我使用在这里找到的类将 userID 转换为一些随机字符串。
从他的博客:
跑步:
alphaID(9007199254740989);
将返回 'PpQXn7COf' 并且:
alphaID('PpQXn7COf', true);
将返回“9007199254740989”
所以这个想法是用户可以做 www.mysite.com/user/PpQXn7COf 我把它转换成一个普通的整数,这样我就可以在 mysql 中做
"Select * from Users where userID=".alphaID('PpQXn7COf', true)
现在我刚刚开始与 Cassandra 合作,我正在寻找一些替代品。
- 我想要像 www.mysite.com/user/PpQXn7COf 这样的网址,而不是像 www.mysite.com/user/username1
- “PpQXn7COf”uuid 必须尽可能短。
在此处解释的 Twissandra 示例中:http ://www.rackspace.com/cloud/blog/2010/05/12/cassandra-by-example/
他们创建了一些很长的 uuid(我猜它很长,因为它几乎 100% 确定它是随机的)。
在 mysql 中,我只有一个自动增加的 userID 列,所以当我使用 alphaID() 函数时,我总是得到一个非常短的随机字符串。
有人知道如何尽可能干净地解决这个问题吗?
编辑:
它用于社交媒体网站,因此它必须是持久的。这也是为什么我不想在 url 中使用用户名/实名,如果他们需要,用户不能保持谷歌未被检测到。
我只是有一个简单的想法,但是我不知道它的可扩展性如何
<?php
//createUUID() makes +- 14 char string with A-Z a-z 1-0 based on micro/milli/nanoseconds
while(get_count(createUUID()) > 0){//uuid is unique
//insert username pass, uuid etc into cassandra
if($result == "1"){
header('Location: http://www.mysite.com/usercenter');
}else{
echo "error";
}
}
?>
当它达到让我们说 twitter/facebook 的大小时:
- 它会在可接受的时间内执行吗?
- 它是否仍然会足够快地生成唯一的 uuid,所以如果 10000 个用户/秒正在注册它不会混乱?