推荐一款id生成器: Hashids

唯一 id 生成的方式有很多种,比较常见的有以下几种方式:

  • 语言自带功能,如 Java 中的 UUID,常用于后端

  • 第三方工具提供,如 npm 中的 nanoid,常用于前端

  • Twitter 开源的 Snowflake 算法,常用于后端

  • 美团开源的 Leaf 算法,常用于后端

  • ...

  

本文再推荐一款唯一 id 生成器:Hashids。它具有以下特性:

  • 只能把指定的整数(且不支持负数)转换为唯一 id,具有一定的局限性。

  • 不会发生冲突。因此我们无需考虑冲突碰撞的解决方案。

  • 可自定义字符集和盐。

  • 生成的结果无序,避免被遍历。

  • 生成的结果自动规避脏话单词,如 shit 之类。

  • 可以反向解析,这对于某些场景尤为合适(比如短链接系统,可以根据生成的短链接 id 获取原始 id,再从数据库中根据原始 id 拿到对应的长链接)。

可见,该生成器具有一定的局限性,但提供了较为丰富的功能,在特定的场景下是非常好用的。

另外,对应源码短小精悍,且提供了多种版本的实现,包括但不限于JavaScript、Java、C等语言,有兴趣的同学可以到官网 hashids.org 学习使用。

发挥想象力,看看你有什么场景可以使用它呢?

posted @ 2022-10-07 00:26  xiaoxi666  阅读(722)  评论(0编辑  收藏  举报
TOP