我需要一个唯一的标识符来区分实体,但实际上这些实体没有很多,并且当实体被销毁时可以重复uid。实体在分布式系统中创建,可以同时创建多次。
目前使用流行的UUID库,但UUID是128位数。根据我的系统设计,int类型绰绰有余。如果uid可以回收,那么8字节就可以了。所以我认为有很多优化空间。
例如:
bool isEqual(const char *uid1, const char *uid2) {
return strcmp(uid1, uid2) == 0;
}
如果我可以使uid为整数而不是字符串,那么我不需要使用字符串比较函数。
bool isEqual(int uid1, int uid2) {
return uid1 == uid2;
}
但我现在还不知道有成熟的图书馆可以满足我的需求。
所以我想问你:
顺便说一下,我可以使用C / C ++ / lua。
如果您想在完全受控的分布式系统上生成自定义专用uid,您有3种可能:
要注意:
这些解决方案是否已实施?
是的,在允许自动生成id的数据库系统中。
值得?
只有你可以说......
我们为Python提供了一个小巧,安全,唯一的字符串ID生成器,它允许您减少ID长度(但增加了碰撞概率),您可以将长度作为参数传递。要在python环境中使用:
pip安装nanoid
from nanoid import generate
generate(size=10) => u'p1yS9T21Bf'
要查看ID的生成方式以及给定长度的碰撞概率,请访问qazxsw poi