什么是更好的在运行时生成随机ID或在之前保持方便?

时间:2013-07-04 18:09:05

标签: string algorithm random unique

我正在编写一个应用程序,需要做一些与url缩短网站功能类似的功能。我将生成6个字符(不区分大小写的字母数字)随机字符串,用于标识其较长版本的链接。这导致2176782336种可能性((10 + 26)^ 6)。在分配这些字符串时,我可以考虑两种方法。

方法1:系统在运行时生成随机字符串,并在系统中检查它的唯一性,如果它不是唯一的,则再次尝试。最后以某种方式达到一个独特的字符串。但如果用户可能“不走运”,它可能会产生问题。

方法2:我生成一些可能值的池并在需要时立即分配它们,但这会确保用户总是几乎立即分配一个唯一的字符串,而这同时也意味着,我必须事先在crons中做大量的计算,并且会在一段时间内增加。

虽然我已经拥有了生成此类值的代码,但是由于我期待高度加速的应用体验,因此对方法的帮助可能很有见地。我找不到任何关于此的比较研究。

干杯!

1 个答案:

答案 0 :(得分:1)

我在类似情况下做的是保持N值排队,以便我可以立即分配它们,然后当队列的大小低于某个阈值(比如.2 * N)时,我有后台任务将另一个N项添加到队列中。一旦程序启动就开始执行后台任务可能是有意义的(而不是离线生成第一个N值然后在启动时加载它们),假设启动和启动之间会有一些延迟。请求队列中的值。