在编写我的应用程序时,我想为我的数据库中的某些实体提供随机标签,例如 ABCD。这些总是四个字符,可以包含大写字母和数字。
问题是,如何分配它们?我们永远不会使用它提供的 160 万种可能性,但是随着数据库变得越来越满,使用这个 L4 伪代码生成随机字符串的“查找”时间会呈指数增长:
function makeUniqueKey() {
while (true) {
$key = strtoupper(str_random(4));
if (!DB::table('items')->where('key', '=', $key)->count()) {
return $key;
}
}
}
我想这更像是一个强迫症的好奇心问题,但是为了为数据库中的项目创建随机的、唯一的键,非指数算法有什么巧妙的技巧吗?